【发布时间】:2010-09-27 06:21:38
【问题描述】:
情况:
我需要将我们当前的开发环境从 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 位进程,因此脚本会找到 Program Files 目录的x86 版本,并且一切正常。
在我能找到的所有其他 64 位机器上(包括我的家用机器),C:\Windows\System32\cmd.exe 是 64 位版本,而 32 位版本在 C:\Windows\SysWow64\cmd.exe 中。所以构建脚本找不到他们正在寻找的任何东西并且失败了。
我现在明白,如果您需要,应该显式调用 32 位 cmd.exe,默认情况下您会得到 64 位 cmd.exe。 WORKSFORME的典型案例...
问题是,这不正确的机器发生了什么?为什么我在一台机器上默认获得 32 位 cmd.exe 而在其他机器上却没有?在所有情况下,我都明确地从Start|Run 菜单执行C:\Windows\System32\cmd.exe,但仅在一台机器上得到不同的结果。都运行相同版本的 Vista 64bit。
有什么想法或见解?
(*) 请接受我必须这样做。我无权说为什么我这样做。从头开始重新安装操作系统和一切可能会起作用,但这肯定是矫枉过正。此外,说服我们的 IT 部门提供 Vista 机器已经够难的了!
【问题讨论】:
标签: windows-vista 32bit-64bit cmd system32 syswow64