2014-06-17 10 views
0

我想遠程連接到網絡中的另一臺計算機並遠程運行其應用程序。 我使用WMI連接到網絡PC,當我嘗試通過創建wmi_process來運行應用程序(如「firefox」)時,它會在進程任務管理器中創建firefox.exe,但它不會運行它!(firefox.exe運行在後臺打開!)如何在遠程計算機上打開與「firefox」相同的已安裝應用程序?

我也想打開應用程序。我可以這樣做嗎? 是否有其他方式可以遠程連接和運行安裝在計算機上的程序? 謝謝...

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); 
} 

回答

1

恐怕這是不可能使用WMI。出於安全原因,您無法以此方式創建交互式遠程進程。

請參閱Microsoft文檔here

您可以使用Win32_Process.Create對 遠程計算機執行腳本或應用程序。但是,出於安全原因,過程不能 交互。當在本地 計算機上調用Win32_Process.Create時,該過程可以是交互式的。

這正是你上面的代碼試圖做的事 - 這樣你就可以創建一個過程,但它不能夠相互作用與用戶(它不能創建一個可見的窗口,例如)。

相關問題