2

こんにちは、私はリモートマシンでexeファイルを実行しようとしています(からではなく、オンです)。

次のような非常に単純なコードがあります。

ProcessStartInfo info = new ProcessStartInfo("C:\\PsTools");
info.FileName = "psexec \\\\" + machine.Name + "\\C\\Program Files\\test.exe";
info.RedirectStandardOutput = true;
info.UseShellExecute = false;
Process p = Process.Start(info);

このコードを実行しようとすると、「指定されたファイルが見つかりません」というエラーが表示されます。

  1. 指定したディレクトリに「test.bat」というファイルがあります。
  2. リモート マシンは同じドメインにあり、C フォルダーは共有されています (私は管理者です)。
  3. PsTools をインストールし、環境変数として構成しました。
  4. さまざまなコードを試しました (たとえば、ProcessStartInfo コンストラクターと FileName プロパティで "psexec" を使用しない場合、bat ファイルはリモート コンピューターではなくローカル コンピューターで実行されます)。

何か案は?

4

1 に答える 1

3

私の推測では、psexecUseShellExecute を false に設定しているため、 が見つからないということです。psexec.exe へのフル パスを指定してみてください。

次のように、開始するファイルだけFileNameにプロパティを設定し、コマンド ライン引数にプロパティを設定する必要もあります。Arguments

ProcessStartInfo info = new ProcessStartInfo("C:\\PsTools");
info.FileName = @"c:\whatever\psexec.exe";
info.Arguments = @"""\\" + machine.Name + @"\C\Program Files\test.exe""";
info.RedirectStandardOutput = true;
info.UseShellExecute = false;
Process p = Process.Start(info);

「Program Files」にスペースが含まれているために2つの引数に分割されないように、プロパティに二重引用符追加したことに注意してください。Arguments

于 2011-04-04T06:34:01.023 に答える