c# - 远程启动进程
问题描述
我正在更新要使用名为 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 启动它,我会遇到两个错误之一。
- GoAnywhere 任务运行我的软件,该软件启动进程 (@\server\path\to\process)。这会导致本地错误(通过在服务器上以相同方式运行软件来证明),包括安全错误。如果绕过安全错误,则会出现第二个错误,指示未正确安装第三方软件。如果错误没有被绕过,那么我的软件会根据 GoAnywhere 任务协议超时。
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)
很明显,使用本地路径可以让我直接在服务器上运行它,而不是通过远程任务。有没有办法使用其完整的服务器路径来指示服务器进程,但让服务器将其视为在本地调用它?
解决方案
推荐阅读
- android - 如何解决:无法将资源写入存档 IO 错误
- javascript - 什么是重置动态对象值的最佳方法
- c++ - 将 const 引用返回到临时的行为与本地 const 引用不同?
- r - 为什么igraph中的eigen_centrality函数每次执行的结果都不同
- chart.js - Chart.js 如何使用脚本选项
- cmake - CMake:打印目标的属性,包括其依赖项
- time-complexity - 嵌套 for 循环的时间复杂度
- sql - PgSQL 多维数据集选择优化
- php - 我可以在 codeigniter 的 $this->db->escape() 中使用 md5 散列值吗?
- android - 如何在Android中进行用户识别?