0

状況:

現在の開発環境を Windows XP 32 ビットから Windows Vista 64 ビット (*) に変換する必要があります。当然のことながら、私たちのビルド システムでは、ハードコーディングされたパスに問題がある箇所がたくさんありました (例: " C:\Program Files" が " " になるC:\Program Files (x86))。幸いなこと%ProgramFiles%に、ソース プロセス (32 ビットまたは 64 ビット) に基づいて適切なディレクトリにマップされる環境変数があります。そこで、ビルド スクリプトを で更新しました%ProgramFiles%が、これで終わりだと確信していました。

ビルド環境は、コマンドライン ( C:\Windows\System32\cmd.exe) から呼び出されます。

問題: 1 つの特定のマシン (つまり、作業中の開発マシン) で、実際には 32 ビット プロセスであることが判明したC:\Windows\System32\cmd.exeため、スクリプトはディレクトリのx86バージョンを検出し、すべてがうまく機能します。Program Files

私が見つけることができる他のすべての 64 ビット マシン (自宅のマシンを含む) では、C:\Windows\System32\cmd.exeが 64 ビット バージョンで、32 ビット バージョンがC:\Windows\SysWow64\cmd.exe. そのため、ビルド スクリプトは探しているものを見つけることができず、失敗します。

32bitcmd.exeが必要な場合は明示的に呼び出す必要があり、デフォルトでは 64bit を取得する必要があることを理解しましたcmd.exe。~の典型的なWORKSFORMEケース

問題は、これが正しくないマシンに何が起こったのかということです。cmd.exeあるマシンではデフォルトで32 ビットになっているのに、他のマシンではそうではないのはなぜですか? C:\Windows\System32\cmd.exeいずれの場合も、メニューから明示的に実行していますが、1 台のマシンでのみStart|Run異なる結果が得られます。すべてが同じエディションの Vista 64 ビットを実行しています。

考えや洞察はありますか?

(*) 私がこれをしなければならないことを受け入れてください。なぜ私がこれを行っているのかを言う自由はありません。OS とすべてを最初から再インストールすればおそらくうまくいくでしょうが、それは確かにやり過ぎです。さらに、Vista マシンを配布するよう IT 部門を説得するのは非常に困難でした。

4

4 に答える 4

2

32ビットプロセスからcmdを実行した場合、ファイルリダイレクト( http://msdn.microsoft.com/en-us/library/aa384187.aspx )により、32ビットcmdが取得されます。エクスプローラーから実行すると、32ビットバージョンのCMDを入手できますか?

于 2008-12-17T01:48:26.007 に答える
2

私はついに問題を発見しました。予想通り、それは非常に単純です: ユーザーエラーです。エクスプローラー (それ自体が Windows Vista 64 ビットの 64 ビット プロセス) は、既定で 64 ビットのコマンド プロンプトを起動します。32 ビットCMD.EXEの が必要な場合は、明示的に を参照する必要がありますC:\Windows\SysWoW64\CMD.EXE

これが私のシステムで正常に機能した理由は、ほとんどのコマンドラインで 32 ビットの Far Manager を使用しているためです (したがって、32 ビットのコマンド プロンプトが起動します)。確認したところ、32 ビット ウィンドウと 64 ビット ウィンドウを混同したに違いありません (結局のところ、同じように見えます!) 愚かな質問をしました。

Die in Sente の問題%ProgramFiles(x86)%は、Windows Vista 32 ビットには存在しないことです。

ああ、自分を馬鹿にするための公開投稿のようなものはありません... :)

于 2009-01-19T20:11:48.860 に答える
1

cmd.exe両方のマシンの[スタート]メニューから起動します。正確な再現:

  • スタートオーブをクリックします
  • cmd」と入力すると、一致するものが1つだけ表示されます(c:\windows\system32\cmd.exe
  • 起動します。

私の作業用マシンでは、32ビットバージョンが起動します(タスクマネージャーで示されているよう*32に、タブの名前に追加されていProcessesます)。私が試した他のすべてのVista64マシンでは、64ビットバージョンのが起動しcmdますが、この動作の合理的な説明が見つかりません。

影響を受けるマシンでそれ自体が32ビットか64ビットかを確認していませんexplorer.exe。おそらくこれは関連しています...ヒントをありがとう。

于 2008-12-17T03:35:37.583 に答える