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

2024-04-18

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

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

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?


因为您从 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/ 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。这将是 ”x86“对于 32 位和”AMD64“ 对于 64 位操作系统。

把它们放在一起:

对于 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
)

For a bash script:

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 上也是如此)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 MINGW 启动时运行 System32 程序而不是 SysWOW64 的相关文章

  • 如何以非交互方式指定“psql”的密码?

    我正在尝试使用 shell 脚本自动执行数据库创建过程 但我遇到了向其传递密码的障碍psql https en wikipedia org wiki PostgreSQL Database administration 下面是 shell
  • 如何从 Python (2.7) 中生成的进程中消除 Windows 控制台? [复制]

    这个问题在这里已经有答案了 可能的重复 在没有控制台的情况下使用 Popen 在 python 中运行进程 https stackoverflow com questions 1813872 running a process in pyt
  • VC++ 中的 getopt()

    我非常喜欢使用 GNUgetopt http www gnu org software libtool manual libc Getopt html 当在Linux 据我所知 getopt 在 MS VC 下不可用 Note Win32环
  • 从 IPConfig 获取 IP 地址,稍后在代码中使用,或保存 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 是否可以运
  • bash:从数组中删除变量? [复制]

    这个问题在这里已经有答案了 bin bash tank one two three x two unset tank x echo tank 我想从数组中删除 x 但不知何故它删除了数组的第一个元素 我该如何解决这个问题 您有一个索引数组
  • jenkins构建完成后如何将更改推送到github?

    我有一个 jenkins 作业 它从 github 克隆存储库 然后运行 powershell 脚本来增加文件中的版本号 我现在正在尝试将该更新文件发布回 github 上的原始存储库 因此当开发人员提取更改时 他会获得最新的版本号 我尝试
  • 我可以使用什么 C++ 库在 Windows 上将 PDF 转换为图像?

    我正在开展一个需要分析图像的项目 这些图像的主要来源是网络摄像头 但最近我们被要求添加对上传文件和扫描仪的支持 这在大多数情况下都很好 只是他们希望我们能够使用 PDF 格式的文档 我需要一个原始像素位图进行处理 在 Mac 上 我可以使用
  • MinGW支持MFC吗?

    我已经使用 MinGW 开发了 WinAPI 应用程序 没有出现任何问题 现在 我可以用 MFC 做同样的事情吗 我只是在这里猜测 但我认为您需要购买 Visual Studio 的副本才能获得使用 MFC 的许可证 MFC 也不因其对 C
  • Windows Unicode C++ 流输出失败

    我目前正在编写一个应用程序 它要求我在任意窗口上调用 GetWindowText 并将该数据存储到文件中以供以后处理 长话短说 我注意到我的工具在 战地 3 上失败了 我将问题范围缩小到窗口标题中的以下字符 http www filefor
  • 使用 git-svn 时模拟 subwcrev

    我使用 git svn 与包含一些 C 项目的现有 SVN 存储库进行交互 subwcrev exe 用作预构建事件来更新 C 标头 svnversion h 中的某些字符串 这些字符串被硬编译以形成生成的二进制文件的一些版本信息 由于 s
  • 批处理文件中的 %* 是什么意思?

    我见过的用法 在批处理文件和命令行中 有人可以解释一下的典型用法吗 有一个例子吗 它的意思是 命令行中的所有参数 例如 当您想要将命令行从批处理文件转发到另一个程序时 它非常有用 REM mybatchfile cmd echo You c
  • bash fork 炸弹的另一个版本是如何工作的?

    我大致了解如何这个通用版本 https stackoverflow com questions 991142 how does this bash fork bomb work bash fork 炸弹的工作原理 然而 我见过另一个版本 特
  • 为什么 ssh-agent 需要 root 访问权限?

    我刚刚安装了 Archbang 并尝试克隆我的 Git 项目 这需要 SSH 密钥 过去 我在 Ubuntu 和 RedHat 机器上遵循 Github 指南取得了成功 但由于某种原因 它在我的新 Arch 安装上不起作用 我已使用以下命令
  • 是否可以在一台机器上使用 GitHub 和 GitLab?

    我的账户位于GitHub and GitLab 我生成了 RSA 密钥并将其添加到我的帐户中GitLab 但现在我需要与GitHub在第二个项目上 我知道GitLab和GitHub都使用git 请告诉我是否可以在一台机器上使用 GitHub
  • 如何在 Powershell 中为特定命令设置别名?

    有一个命令我经常输入 java jar foo param1 param2 param n 如何创建命令别名来运行此命令 如下所示 launch foo param3 where launch foo被翻译成完整的命令 你必须创建一个函数
  • Git 大文件存储与 Google 云存储

    我是该项目的一部分 我们使用 git 存储库托管在谷歌云源代码库 https cloud google com source repositories 现在我们使用谷歌云存储 https cloud google com storage 存
  • CodeCommit 错误 Elastic Beanstalk (AWS)

    运行后 pip install upgrade awsebcli 尝试执行以下操作时出现以下错误 eb deploy 无法将代码推送到 CodeCommit 存储库 错误 CommandError 处理 git 命令时发生错误 错误代码 1
  • CTRL+C 和 CTRL+Break 不同吗?

    我一直认为它们绝对是一样的 但我刚刚在以下位置找到了一些值 CTRL C EVENT 和 CTRL BREAK EVENT设置控制台Ctrl处理程序 http msdn microsoft com en us library ms68601
  • Jenkins Git 参数插件无法获取标签

    詹金斯版本 1 593 Git 参数插件 0 4 0 GIT 客户端插件 1 16 1 我使用私有 git 存储库 可以通过 ssh 访问 我的构建是参数化的 git参数是TAG TO BUILD 要构建的分支是refs tags TAG
  • 如何通过pygit2获取当前签出的Git分支名称?

    这个问题应该与 如何获取Git中当前的分支名称 https stackoverflow com questions 6245570 how to get current branch name in git 获取 git 当前分支 标签名称

随机推荐