尝试使用psexec(c#)在远程上运行.exe时遇到问题?

时间:2011-04-04 06:28:26

标签: c# exe psexec

嘿所有, 我正在尝试在远程机器上运行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文件在本地计算机而不是远程计算机上运行...)作品!
  5. 任何想法?

1 个答案:

答案 0 :(得分: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属性中添加了双引号,因此不会因为“Program Files”中包含空格而将其拆分为两个参数。