Windows Vista 64 ビットがデフォルトで 32 ビットの cmd.exe を使用するのはなぜですか?(マシン固有)
-
22-08-2019 - |
質問
状況:
現在の開発環境を Windows XP 32 ビットから Windows Vista 64 ビットに変換する必要があります (*)。当然のことながら、ビルド システム内でハードコードされたパスに問題がある箇所がたくさんありました (例:」C:\Program Files
「なる」C:\Program Files (x86)
")。幸いなことに、 %ProgramFiles%
ソース プロセス (32 ビットまたは 64 ビット) に基づいて適切なディレクトリにマップされる環境変数。そこでビルドスクリプトを更新しました %ProgramFiles%
, 、それで終わるだろうと確信していました。
ビルド環境はコマンドラインから呼び出されます(C:\Windows\System32\cmd.exe
).
問題:ある特定のマシン (つまり、職場の開発マシン) では、次のことがわかります。 C:\Windows\System32\cmd.exe
実際には 32 ビット プロセスであるため、スクリプトは x86
のバージョン Program Files
ディレクトリとすべてがうまく機能します。
私が見つけることができる他のすべての 64 ビット マシン (自宅のマシンを含む) では、 C:\Windows\System32\cmd.exe
は 64 ビット版、32 ビット版は C:\Windows\SysWow64\cmd.exe
. 。そのため、ビルド スクリプトは探しているものが見つからず、失敗します。
32bitだと分かりました cmd.exe
それが必要な場合は明示的に呼び出す必要があり、デフォルトでは 64 ビットが取得されます。 cmd.exe
. 。典型的なケース WORKSFORME
...
質問は, 、これが当てはまらないマシンはどうなったのでしょうか?なぜ 32 ビットを取得するのですか cmd.exe
あるマシンではデフォルトで設定されていますが、他のマシンではデフォルトでは設定されていませんか?すべての場合において、私は明示的に実行しています C:\Windows\System32\cmd.exe
から Start|Run
メニューを実行しても異なる結果が得られる 1台のマシンのみで. 。すべてが同じエディションの Vista 64 ビットを実行しています。
何か考えや洞察はありますか?
(*) ご了承ください。 しなければならない これを行う。私には言う自由はない なぜ 私はこれをやっています。OS とすべてを最初から再インストールすればおそらく機能するでしょうが、それは確かにやりすぎです。それに、Vista マシンを配布するよう IT 部門を説得するのは非常に困難でした。
解決 2
私は最終的に問題を発見した、と予想されるとして、それは非常に簡単です:ユーザー・エラー。 (Windows Vistaの64ビットの64ビットプロセスそのものである)Explorerは、デフォルトで64ビットのコマンドプロンプトを起動します。あなたは32ビットCMD.EXE
をしたい場合は、明示的C:\Windows\SysWoW64\CMD.EXE
を参照する必要があります。
これは私のシステムでうまく働いた理由は、私は、32ビット(したがって、それは32ビットのコマンドプロンプトを起動する)である私のコマンドラインの使用方法、のほとんどの極東マネージャを使用することです。私は、64ビットのウィンドウの32ビットのウィンドウを混同(すべての後、彼らは同じように見える!)と愚かな質問をしている必要があります確認したときます。
先手でダイ、%ProgramFiles(x86)%
の問題は、それが本当に単純されているだろうので、それは、Windows Vistaの32ビット版には存在しないということです。
ああ、自分の馬鹿を作るために、公共の投稿のようなものが...ありません。)
他のヒント
あなたは32ビットプロセスからcmdを実行した場合、あなたは<(ため、ファイルのリダイレクトの32ビットcmdを取得したいのhref = "http://msdn.microsoft.com/en-us/library/aa384187 .aspxの」REL = "nofollowをnoreferrer"> http://msdn.microsoft.com/en-us/library/aa384187.aspx を)。あなたはエクスプローラからそれを実行するときは、CMDの32ビットバージョンを入手できますか?
cmd.exe
両方のマシンの [スタート] メニュー内から起動します。正確な再現:
- 開始オーブをクリックします
- タイプ "
cmd
"、一致するものが 1 つだけ表示されます (c:\windows\system32\cmd.exe
) - 起動してください。
私の作業用マシンでは、32 ビット バージョンが起動します (タスク マネージャーで示されているように、 *32
の名前に追加される Processes
タブ)。私が試した他のすべての Vista 64 マシンでは、これにより 64 ビット バージョンの cmd
, 、そしてこの行動の合理的な説明が見つかりません。
かどうかは確認していない explorer.exe
影響を受けるマシンではそれ自体が 32 ビットまたは 64 ビットだったので、これが関係している可能性があります...ヒントをありがとう。
その代わり%ProgramFiles%
の、そこにあなたがしたい場所に関係なく、常にcmd.exeのが実行されているの、行く%Programfiles(x86)%
ではないでしょうか?私のWindows XP 64ビットシステムは、すべてのことがあります。 Vistaのシステムを起動するために時間を割いていないため恐れ入ります。