从MINGW启动时运行System32程序而不是SysWOW64

我试图从一个shell脚本文件创buildEXE文件我从minggw启动(从git bash使用)

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

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

他们总是最终调用SysWOW64中的makecab(创build一个32位.exe)是否有无论如何,我从system32启动一个新的cmd为我能够使我的64位.exe?

因为您正在运行32位可执行文件中的命令,所以操作系统会自动将System32重定向到SysWOW64,原因是与旧(早于64位)可执行文件兼容(这样,它们将从正确的路径加载它们的依赖项)。

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

%windir%\sysnative\iexpress.exe //NC:\\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 //NC:\\git\\install_32bitWindows.SED

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

要检测您是否在32位或64位操作系统上,请检查(具有误导性的名称)环境变量PROCESSOR_ARCHITECTURE 。 对于32位,将是“ x86 ”,对于64位OS将是“ AMD64 ”。

把它放在一起:

对于Windows CMD脚本:

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

对于一个bash脚本:

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

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

如果你调用它:

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

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