代码之家  ›  专栏  ›  技术社区  ›  Benoit Miller

为什么Windows Vista 64位默认使用32位cmd.exe?(特定于机器)

  •  0
  • Benoit Miller  · 技术社区  · 16 年前

    情况:

    我需要将我们当前的开发环境从Windows XP 32位转换为Windows Vista 64位(*)。当然,在我们的构建系统中,我遇到过很多硬编码路径有问题的地方(例如 C:\Program Files “成为” C:\Program Files (x86) “”。幸运的是,有一个 %ProgramFiles% 基于源进程(32位或64位)映射到正确目录的环境变量。所以我更新了构建脚本 %程序文件% 我确信这一切都会结束。

    从命令行调用生成环境( 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 . 所以构建脚本找不到任何他们想要的东西,并且失败了。

    我现在明白了32位 cmd.exe 如果您需要的话,应该显式调用,默认情况下,您得到64位 命令提示符 . 典型案例 WORKSFORME

    问题是 ,如果这不是真的,机器怎么了?为什么我得到32位 命令提示符 默认情况下,在一台机器上,而不是在其他机器上?在任何情况下,我都明确地执行 C:\windows\system32\cmd.exe Start|Run 菜单,但得到不同的结果 仅在一台机器上 . 它们都在运行相同版本的64位Vista。

    有什么想法或见解吗?

    (*)请接受我 必须 这样做。我无权说 为什么? 我在做这个。重新安装操作系统和所有从零开始的东西可能都能工作,但这肯定是杀伤力太大了。此外,很难说服我们的IT部门提供Vista机器!

    4 回复  |  直到 8 年前
        1
  •  2
  •   Ana Betts    16 年前

    如果从32位进程运行cmd,则会因为文件重定向而得到32位cmd。( http://msdn.microsoft.com/en-us/library/aa384187.aspx )当您从资源管理器运行命令时,是否获得32位版本的命令?

        2
  •  2
  •   Peter Mortensen icecrime    8 年前

    我终于发现了问题,正如预期的那样,它非常简单:用户错误。Explorer(它本身是Windows Vista 64位上的64位进程)默认情况下启动64位命令提示。如果你想要32位 CMD.EXE ,必须显式引用 C:\Windows\SysWoW64\CMD.EXE .

    这在我的系统上工作得很好的原因是我在大部分命令行使用中都使用了far管理器,它是32位的(因此它启动了32位命令提示)。当我验证时,我一定把32位窗口和64位窗口混淆了(毕竟它们看起来是一样的!)问了一个愚蠢的问题。

    死在森特,问题是 %ProgramFiles(x86)% 它不存在于Windows Vista 32位上,因为那样会更简单。

    啊,没有什么比公开发帖更能愚弄你自己的了……:)

        3
  •  1
  •   Benoit Miller    16 年前

    cmd.exe 从两台机器的“开始”菜单中启动。精确再现:

    • 单击开始或
    • “类型” cmd “,只有一场比赛( c:\windows\system32\cmd.exe )
    • 发射它。

    在我的工作机器上,它启动32位版本(如任务管理器所示,它 *32 附加到中的名称 Processes 标签)。在我尝试过的所有其他Vista 64计算机上,这将启动64位版本的 CMD 对于这种行为,我找不到合理的解释。

    我还没查过 explorer.exe 在受影响的机器上,它本身是32位或64位的,也许这是相关的…谢谢你的提示。

        4
  •  0
  •   Peter Mortensen icecrime    8 年前

    而不是 %ProgramFiles% 不是吗? %Programfiles(x86)% 无论运行的是哪个cmd.exe,它都会按您想要的方式运行?我的Windows XP 64位系统都有这个功能;请原谅我没有花时间启动Vista系统。