1

Perl 32 ビットで実行されるインストール プログラムがあります。このプログラムはクラスター リソースに関する情報を取得する必要があるため、(バックティックを使用して) cluster.exe を実行し、その出力を解析します。

Windows Server 2003 では、32 ビット バージョンの cluster.exe が syswow64 の下に存在していたため、これはうまくいきました。ただし、そのような 32 ビット バージョンは Windows Server 2008 には存在しないため、32 ビット プロセスは syswow64 の下で検索するため、cluster.exe のバッククォート実行では、そのような実行可能ファイルが見つからないことが示されます。

この問題を回避してクラスタ リソース情報を取得する方法を誰か考えてくれませんか? 手動で行う方法の 1 つは、system32 から 64 ビット バージョンの cmd.exe をコピーし、それを「/c cluster.exe」で実行して、system32 の下で 64 ビット cluster.exe を起動することです。(cluster.exe をコピーしても、クラスター キャッシュが見つからないため、うまくいきません。) ただし、これは手動の回避策としてのみ有効であり、すべてのユーザーに対する解決策としては有効ではありません。

Windows で 64 ビット版の cluster.exe を起動する別の方法はありますか?

ありがとう、
破片

PS
同様の質問が1 か月前に technetで行われましたが、実際の回答は得られませんでした。

4

1 に答える 1

0

考えられる解決策が 2 つ見つかりました。1 つは、%SystemRoot%\System32\cluster.exe を呼び出すだけの cluster.exe という名前の小さな 64 ビット アプリケーションを作成し (system() を使用)、それを %SystemRoot%\syswow64 の下に配置することです。これは 64 ビット アプリケーションであるため、正しい 64 ビット cluster.exe アプリケーションが呼び出されます。

もう 1 つの解決策は、sysnative リダイレクションを使用することです (ここで説明されているように)。ここで、%SystemRoot%\ System32 \cluster.exe が存在する場合はそれを使用し、%SystemRoot%\ Sysnative \cluster.exe が存在する場合はそれを使用します。 、それ以外の場合は、プレーンな cluster.exe を使用します。

注: これは、先ほど回答された telnet.exe の問題と非常によく似ています。

于 2009-11-11T07:10:04.007 に答える