因为您从 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 上也是如此)。