web-dev-qa-db-ja.com

PsExecがハングします。インストーラーの起動中にエラーが発生しました

特定のリモートコンピューターで、PsExecを使用してインストーラー(.exeファイル)を実行すると、PsExecがハングします。 PsExecが転送したインストーラーをリモートコンピューター(system32にある)から直接実行しようとすると、次のポップアップエラーメッセージが表示されます。

NSIS Error
Error Launching Installer

これは64ビットコンピューターでのみ発生し、一部のインストーラーでのみ発生するようです。しかし、少しグーグルした後、私は解決策を見つけられなかったようです。

このリンク は、system32で実行されているという事実と関係がある可能性があることを示しています。

奇妙なことに、インストーラーをsystem32からデスクトップなどの別の場所にコピーして実行すると、機能します。

何が起きてる?

ありがとう

2
Luca Matteis

逆説的に、64ビットWindowsマシンでは:

  1. c:\ windows\wow64 \には、32ビットのシステムファイルが含まれています。
  2. c:\ windows\system32 \には、64ビットのシステムファイルが含まれています。

32ビットプログラムがc:\ windows\system32 \にアクセスしようとすると、c:\ windows\wow64 \にリダイレクトされます。これは、32ビットプログラムがリダイレクトによってc:\ program files(x86)\ディレクトリにインストールされた場合に発生することと非常によく似ています。

次のディスカッションが役立つ場合があります。 http://forums.shoutcast.com/showthread.php?t=237297

結論:system32からインストーラーを実行することが決して適切な方法ではない多くの理由の1つを発見しました。インストールの完了後にインストーラーが必要ない場合は、インストーラーを一時的な場所にコピーし、インストールが完了したら削除することを検討してください。インストーラーを各マシンに残しておきたい場合は、インストーラーが属する場所(c:\ install\program-nameなど)を確立することを検討してください。

一時的な場所の使用方法の例:

psexec \\ target-pc -e -c -f -w c:\ windows\temp Installer.exe

詳細:

  • -e:プロファイルをロードしないでください(リモートPCの処理速度を上げ、ディスク容量を節約します)
  • -c:ファイルをコピーします
  • -f:同じ名前のファイルがすでに存在する場合は上書きします(注意して使用してください)
  • -w c:\ windows\temp:作業ディレクトリをc:\ windows\tempに設定します
1
Skyhawk