2

大家好,我正在尝试在远程机器上运行 exe 文件(不是来自,而是 ON)。

我有非常简单的代码如下:

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

我的猜测是它无法找到psexec,因为您已将 UseShellExecute 设置为 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);

请注意,我还在属性中添加了双引号,Arguments这样它就不会因为“程序文件”中有空格而分成两个参数。

于 2011-04-04T06:34:01.023 回答