2014-12-19 100 views
0

當「SelectedMachine」是從其中啓動C#EXE的本地主機時,以下代碼將起作用。當「SelectedMachine」是遠程機器時,該過程不會啓動。沒有例外,沒有錯誤,就好像它是成功的,但是,這個過程從未開始。有任何想法嗎?WMI遠程進程無法啓動,本地啓動不正常

object[] processToRun = { "notepad.exe" }; 

ConnectionOptions connOptions = new ConnectionOptions(); 
connOptions.Impersonation = ImpersonationLevel.Impersonate; 
connOptions.Authentication = AuthenticationLevel.PacketPrivacy; 
connOptions.EnablePrivileges = true; 

ManagementScope manScope = new ManagementScope(String.Format(@"\\{0}\ROOT\CIMV2", SelectedMachine), connOptions); 
manScope.Connect(); 

ObjectGetOptions objectGetOptions = new ObjectGetOptions(); 
ManagementPath managementPath = new ManagementPath("Win32_Process"); 

ManagementClass processClass = new ManagementClass(manScope, managementPath, objectGetOptions); 
processClass.InvokeMethod("Create", processToRun);  

編輯:當我通過wbemtest時,會發生相同的行爲。當名稱空間爲root \ cimv2(本地)時,該進程執行時,它是\ RemoteMachineName \ root \ cimv2,它聲明成功,但永遠不會在遠程計算機上啓動。不知道我在這裏錯過了什麼。

回答

0

此行爲在Win32_Process.Create方法文檔中描述。

出於安全原因,Win32_Process.Create方法不能用於 遠程啓動交互式進程。

+0

感謝您的回答。那麼是不是可以在使用wmi的遠程機器上啓動進程? – user2953714

+0

你可以使用'Win32_ScheduledJob'類在遠程機器上啓動一個進程嘗試這個答案http://stackoverflow.com/questions/6386422/what-windows-class-to-use-when-i-want-to-啓動一個進程,遠程/ 6430522#6430522 – RRUZ