64位Windows 2008上的32位cluster.exe

时间:2009-11-03 16:20:52

标签: windows cluster-computing wow64

我们有一个在Perl 32位中运行的安装程序。此程序需要获取有关群集资源的信息,因此它运行cluster.exe(使用反引号)并解析其输出。

在Windows Server 2003上,这很顺利,因为syswow64下存在32位版本的cluster.exe。但是,Windows Server 2008上不存在这样的32位版本,因此cluster.exe的反引号表示无法找到这样的可执行文件,因为32位进程在syswow64下查找它。

有人可以想到一种方法可以绕过这个问题并获取群集资源信息吗? 一种手动方式是从system32复制64位版本的cmd.exe,然后使用“/ c cluster.exe”运行它,这将启动system32下的64位cluster.exe。 (复制cluster.exe将无法正常工作,因为它无法找到群集缓存。)但是,这仅适用于手动解决方法,而不是所有用户的解决方案。

是否有另一种方法可以让Windows启动64位cluster.exe?

谢谢,
splintor

PS
一个月前asked on technet也有类似的问题,但没有得到真正的答案。

1 个答案:

答案 0 :(得分:0)

我找到了两种可能的解决方案: 一种是编写一个名为cluster.exe的小型64位应用程序,它只调用%SystemRoot%\ System32 \ cluster.exe(使用system()),并将其放在%SystemRoot%\ syswow64下。由于它是64位应用程序,因此将调用正确的64位cluster.exe应用程序。

另一个解决方案是使用sysnative重定向(如here所述),所以现在我们检查 - 如果%SystemRoot%\ System32 \ cluster.exe存在,我们使用它,否则如果%SystemRoot%\ Sysnative \ cluster.exe存在,我们使用它,否则我们使用普通的cluster.exe。

注意:这与刚才得到解答的this telnet.exe problem非常相似。