32位的cmd.exe如何在Windows Server 2003 x64上启动64位的cmd.exe?

7
这是对 Windows Server 2008 64位上7-Zip执行权限 的跟进。
我试图避免过于复杂的构建过程来制作多个7-Zip EXE文件。我只需要一个 .cmd 文件,在读取一些64位注册表条目后启动我的Java进程。然而,要成功使用单个EXE文件,它需要是32位的。
上述问题找到了一个技巧,可以让Windows Server 2008检测到32位cmd.exe并将其切换为64位。在Windows Server 2003上是否有这样的方法呢?有一个Windows热补丁可以使reg.exe以32位模式访问64位条目,但我无法保证客户的服务器上已安装该补丁,因此这种解决方法行不通。
1个回答

17
要从32位的cmd.exe启动64位的cmd.exe,您必须能够访问c:\Windows\System32文件夹,而不被重定向到c:\Windows\SysWow64文件夹。在Win2008中,您可以通过访问c:\Windows\Sysnative路径来实现此目标。不幸的是,在Win2003中需要一个热补丁(请参见http://support.microsoft.com/kb/942589)。
有一种解决方法-您可以创建一个NTFS连接点,该连接点指向c:\Windows\System32文件夹,并使用该连接点的路径而不是c:\Windows\System32。使用Sysinternals的junction.exe,我成功地从32位cmd.exe创建了这样的连接点并启动了64位的cmd.exe。

1
例如,如何从32位安装程序中检查64位注册表:C:\ Windows \ sysnative \ reg.exe QUERY“HKLM \ SOFTWARE \ JavaSoft \ JDK”/v CurrentVersion - JohnP2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接