远程启动进程

时间:2018-06-07 16:10:11

标签: c# process

我正在使用名为GoAnywhere的服务更新要启动的程序。该程序的先前版本在具有自己的第三方软件副本的服务器上作为计划任务运行。

我使用以下代码调用该过程:

ProcessStartInfo pI = new ProcessStartInfo();
pI.CreateNoWindow = true;
/*
* Tried: @\\server\path\to\process, @\\server\c$\path\to\process - generate errors on server
* Tried: @c:\local\path\process, @process - generate errors within GoAnywhere
*/
pI.FileName = @"c:\local\path\process";
pI.Arguments = string.Format("-u {0} -j {1}", "\"User\"", "\"JobName\"");

我可以直接在服务器上运行该软件(模仿最初的本地调度进程),但如果我通过GoAnywhere启动它,我会收到两个错误之一。

  1. GoAnywhere任务运行我的软件,该软件启动进程(@ \ server \ path \ to \ process)。这会导致本地错误(通过在服务器上以相同方式运行软件来证明),包括安全性错误。如果绕过安全错误,则会出现第二个错误,指示未正确安装第三方软件。如果未绕过错误,则我的软件会根据GoAnywhere任务协议超时。
  2. GoAnywhere任务运行我的软件,启动进程(@c:\ local \ path \ process)。但是,该过程因以下捕获的异常而失败。

    System.ComponentModel.Win32Exception (0x80004005): The system cannot find the file specified
    at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
    at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
    at InsightCass.Program.Main(String[] args)
    
  3. 很明显,使用本地路径允许我直接在服务器上运行它,但不能通过远程任务运行它。有没有办法使用其完整的服务器路径来指示服务器进程,但让服务器将其视为在本地调用它?

0 个答案:

没有答案