我想远程连接到网络中的另一台计算机并远程运行其应用程序。 当我尝试运行类似" firefox"的应用程序时,我使用WMI连接到网络PC。通过创建wmi_process,它在进程任务管理器中创建firefox.exe,但它没有运行它!(firefox.exe在后台运行,不会打开!)
我也想打开应用程序。我能这样做吗? 有没有其他方法可以远程连接和运行安装在计算机上的程序? 感谢...
public void RunApps(string AppName)
{
ObjectGetOptions objectGetOptions = new ObjectGetOptions();
ManagementPath managementPath = new ManagementPath("Win32_Product");
string loc = string.Empty;
foreach (ManagementObject mo in managementObjectCollection)
{
if (mo["name"].ToString() == AppName)
{
loc = mo["InstallLocation"].ToString();
}
}
loc += AppName + ".exe";
ManagementClass processClass = new ManagementClass("Win32_Process");
ManagementBaseObject inParams = processClass.GetMethodParameters("Create");
inParams["CommandLine"] = loc;// "calc.exe";
ManagementBaseObject outParams =processClass.InvokeMethod("Create", inParams, null);
}
答案 0 :(得分:1)
我担心使用WMI是不可能的。出于安全原因,您无法以这种方式创建交互式远程进程。
请参阅Microsoft文档here:
您可以使用Win32_Process.Create来执行脚本或应用程序 一台远程电脑。但是,出于安全原因,进程不能 互动。在本地调用Win32_Process.Create时 计算机,这个过程可以是互动的。
这正是您上面的代码尝试做的事情 - 因此您可以创建一个流程,但它无法与用户进行交互(例如,它无法创建可见窗口)。