web-dev-qa-db-ja.com

Windows 7 64ビットで32ビットプログラムを実行できないのはなぜですか?

私が理解していることから、アーキテクチャは16ビットから32ビットにそれほど変更されていないので、Windowsで32ビットアプリを実行するためにXPモードなどが必要なのはなぜですか? 7 64ビット?

それとも私はそれを間違って理解しましたか?

9
Oscar

32ビットプログラムを正常に実行できます。 16ビットプログラムを実行することはできません。

XPモードは少し保険です-特定のソフトウェアが7で実行されない場合(32 OR 64ビット-xpモードはProfessionalエディション以上で利用可能です))、それを実行できますXPモード。これはまだ私には起こっていませんが、おそらく 'あなたは私の死にかけている手からXPを取ることができます。

ほとんどの場合、互換モードは

16
Journeyman Geek

これが非互換性に光を当てることを願っています:

Microsoftは、64ビットバージョンでカーネルを強化することを決定しました。デバイスドライバーはカーネルと同じレベルのハードウェアへのアクセス権を持っているため、セキュリティの名目で64ビットバージョンで変更された特定の事項は次のとおりです。

  • ドライバーをロードするには、Microsoftによる署名が必要です。
  • 技術的には32ビットドライバーが64ビットカーネルで動作するかどうかはわかりませんが(可能性は低いですが)、Microsoftは64ビットカーネルが必要とするキーを使用して新しい32ビットドライバーに署名していません。したがって、既存のすべてのXP 32ビットドライバーは64ビットVista/7では機能しません。
  • ドライバーはカーネルを上書きまたはパッチすることはできません。

Microsoftも新しいビデオディスプレイドライバーモデル(LDDM)に切り替えましたが、古いモデル(XDDM)はそのままにしました。古いモデルであるXDDMは、Aeroをサポートしていません。

一部のプログラムは、カスタマイズされたデバイスドライバーをオンザフライでロードして、タスクを実行します。これらはVista/7では完全に機能しません。

Microsoftは、Vista/7でかなりの数のコンポーネントを更新しました。これは、これらのコンポーネントの文書化されていない動作の変更を意味する可能性があります。これらのコンポーネント内のバグ、または文書化されていないDLL関数に依存するプログラムにも問題があります。

5
LawrenceC

32ビットプログラムは、64ビットWindowsでも問題なく動作するはずです。

XPモードは、いずれかのフレーバーのWindowsVistaおよびWindows7と互換性のないプログラム用です。

詳細については、 このArs Technicaの記事 を参照してください。

この問題は、WindowsVistaのリリースで本当に頭に浮かびました。 VistaのXPとの互換性は非常に良かったが、完璧ではなかった。MicrosoftはVistaで攻撃に対して強化するために多くの作業を行った(もちろん、UACだけでなく、禁止などの他のことも)ユーザーとの対話によるサービス)、およびこれらの変更と改善、およびWindowsのバージョン番号の更新などのよりありふれたものが、いくつかの古いソフトウェアを破壊するために共謀してきました。

2
ChrisF