【问题标题】:Running System32 programs instead of SysWOW64 when launching from MINGW从 MINGW 启动时运行 System32 程序而不是 SysWOW64
【发布时间】:2013-09-29 17:39:42
【问题描述】:

我正在尝试从我从 minggw 启动的 shell 脚本文件(从 gi​​t bash 使用)创建 EXE 文件

我的问题是当我运行这些命令时:

C:/Windows/system32/iexpress.exe //N C:\\git\\install_64bitWindows.SED
C:/Windows/SysWOW64/iexpress.exe //N C:\\git\\Install_32bitWindows.SED

他们总是最终调用 SysWOW64 中的 makecab(创建 32 位 .exe) 无论如何我可以从 system32 启动一个新的 cmd 以便我能够制作我的 64 位 .exe?

【问题讨论】:

    标签: windows git bash mingw wow64


    【解决方案1】:

    因为您从 32 位可执行文件运行命令,操作系统会自动为您将 System32 重定向到 SysWOW64,出于与旧(64 位之前)可执行文件的兼容性原因(这样,它们将从正确的路径)。

    要绕过重定向,您可以从%windir%\sysnative\ 运行您的可执行文件,它会自动重定向到“真实的”System32:

    %windir%\sysnative\iexpress.exe //N C:\\git\\install_64bitWindows.SED

    完整解释见:http://www.tipandtrick.net/how-to-suppress-and-bypass-system32-file-system-redirect-to-syswow64-folder-with-sysnative/

    如果您还想运行 32 位可执行文件,请使用

    %windir%\system32\iexpress.exe //N C:\\git\\install_32bitWindows.SED

    因为这将与 32 位和 64 位操作系统环境兼容。

    要检测您使用的是 32 位还是 64 位操作系统,请检查(误导性命名的)环境变量 PROCESSOR_ARCHITECTURE。 32 位操作系统为“x86”,64 位操作系统为“AMD64”。

    把它们放在一起:

    对于 Windows CMD 脚本:

    if "%PROCESSOR_ARCHITECTURE%"=="x86" (
        %windir%\system32\iexpress.exe //N C:\git\install_32bitWindows.SED
    ) else (
        %windir%\sysnative\iexpress.exe //N C:\git\install_64bitWindows.SED
    )
    

    对于bash 脚本:

    if [ "$PROCESSOR_ARCHITECTURE" = "x86" ]; then
        $WINDIR/system32/iexpress.exe //N C:\\git\\install_32bitWindows.SED
    else
        $WINDIR/sysnative/iexpress.exe //N C:\\git\\install_64bitWindows.SED
    fi
    

    (请注意,在 bash 中,变量名区分大小写,即使在 Windows 上也是如此)。

    【讨论】:

    • 感谢您的详细解释,非常感谢!
    • 另请注意,为了补偿环境变量名称的突然区分大小写,当您从本机 win32 程序启动 msys 程序时,msys 会标准化为大写...
    【解决方案2】:

    如果你调用它:

    C:/Windows/sysnative/iexpress.exe //N C:\\git\\install_64bitWindows.SED
    

    它应该使用 64 位版本的 iexpress 构建。

    【讨论】:

      猜你喜欢
      • 2012-12-31
      • 2017-01-23
      • 1970-01-01
      • 1970-01-01
      • 2018-05-29
      • 2014-11-27
      • 2019-03-29
      • 2021-10-05
      • 2013-11-23
      相关资源
      最近更新 更多