64 位 Windows 2008 上的 32 位 cluster.exe

发布于 2024-08-10 01:18:06 字数 705 浏览 8 评论 0原文

我们有一个以 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 一个月前,但没有得到真正的答案。

We have an installation program that runs in Perl 32-bit. This program needs to get information on cluster resources, so it runs cluster.exe (using backticks) and parse its output.

On Windows Server 2003 this went well, as a 32-bit version of cluster.exe existed under syswow64. However, such a 32-bit version does not exist on Windows Server 2008, so the backticks run of cluster.exe says it can't find such an executable, as 32-bit process look for it under syswow64.

Can someone think of a way we can bypass this problem and get the cluster resource information?
One manual way is to copy the 64-bit version of cmd.exe from system32, and then run it with "/c cluster.exe" which will start the 64-bit cluster.exe under system32. (Copying the cluster.exe won't work well, as it can't find the cluster cache.) However, this is only good as a manual workaround, and not as a solution to all users.

Is there another way to cause windows to start the 64-bit cluster.exe?

Thanks,
splintor

PS
A similar question was asked on technet a month ago, but didn't get a real answer.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

掀纱窥君容 2024-08-17 01:18:06

我找到了两种可能的解决方案:
一种是编写一个名为 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 问题非常相似。

I found two possible solutions:
One is to write a small 64-bit application named cluster.exe that simply calls %SystemRoot%\System32\cluster.exe (using system()), and put it under %SystemRoot%\syswow64. Since it is a 64-bit application, the correct 64-bit cluster.exe application will be called.

Another solution is to use the sysnative redirection (as explained here), so now we check - if %SystemRoot%\System32\cluster.exe exists, we use it, else if %SystemRoot%\Sysnative\cluster.exe exists we use it, else we use plain cluster.exe.

Note: this is very similar to this telnet.exe problem that just got answered.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文