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