首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从MINGW启动时运行System32程序而不是SysWOW64

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

Stack Overflow用户
提问于 2013-09-24 21:17:09
回答 2查看 1.7K关注 0票数 2

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

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

代码语言:javascript
复制
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?

EN

回答 2

Stack Overflow用户

发布于 2013-09-24 21:39:47

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

要绕过重定向,您可以从%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=bit操作系统,请检查环境变量PROCESSOR_ARCHITECTURE (命名有误)。对于32位操作系统,它将是"x86“;对于64位操作系统,它将是"AMD64”。

把所有这些放在一起:

对于Windows CMD脚本:

代码语言:javascript
复制
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脚本:

代码语言:javascript
复制
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上也是如此)。

票数 5
EN

Stack Overflow用户

发布于 2013-09-24 21:28:54

如果您将其调用为:

代码语言:javascript
复制
C:/Windows/sysnative/iexpress.exe //N C:\\git\\install_64bitWindows.SED

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18982740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档