1

我们有一个在 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?

谢谢,
刺客

PS一个月前在technet 上问了
一个类似的问题,但没有得到真正的答案。

4

1 回答 1

0

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

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

注意:这与刚刚得到解答的这个 telnet.exe 问题非常相似。

于 2009-11-11T07:10:04.007 回答