尝试使用psexec(c#)在远程计算机上运行.exe时出现问题?

尝试使用psexec(c#)在远程计算机上运行.exe时出现问题?,c#,exe,psexec,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 = fals

大家好, 我正在尝试在远程计算机上运行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);
当尝试运行此代码时,我得到“系统找不到指定的文件”错误

  • 指定目录中有一个名为“test.bat”的文件
  • 远程计算机在同一个域上,C文件夹是共享的(我是管理员)
  • 我已将PsTools安装并配置为环境变量
  • 我尝试过各种代码(例如,如果我在ProcessStartInfo构造函数和FileName属性上不使用“psexec”,则bat文件在本地计算机上运行,而不是在远程计算机上运行…),但没有任何效果
    有什么想法吗

    我猜它找不到
    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
    属性中添加了双引号,这样它就不会因为“程序文件”中有空格而被拆分为两个参数。

    当您从命令行运行psexec时,您是否设法使其工作?我怀疑这是第一件要尝试的事情。嗯,这不是因为“\\C\\Program Files\\test.exe”中缺少冒号吗?嗯,我对这个网站有点陌生,所以我把我的答案贴上去了:\@Amit也标记一下答案,如果你满意的话,请单击箭头下方的“勾号”。