2013-01-13 289 views
0

上运行的程序我有这样的代码:远程计算机

ConnectionOptions connOptions = new ConnectionOptions(); 
connOptions.Impersonation = ImpersonationLevel.Impersonate; 
connOptions.EnablePrivileges = true; 
ManagementScope manScope = new ManagementScope(String.Format(@"\\{0}\ROOT\CIMV2", sHost), connOptions); 
manScope.Connect(); 
ObjectGetOptions objectGetOptions = new ObjectGetOptions(); 
ManagementPath managementPath = new ManagementPath("Win32_Process"); 
ManagementClass processClass = new ManagementClass(manScope, managementPath, objectGetOptions); 
ManagementBaseObject inParams = processClass.GetMethodParameters("Create"); 
inParams["CommandLine"] = "notepad.exe"; 
ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null); 

当我设置sHost是我的本地IP地址,它的工作原理和记事本中打开。 但是,当我将它设置为远程服务器时,没有任何反应。

(我可以连接到远程计算机,并从我的应用程序复制文件 - 这只是为了尝试远程运行的东西,也为WMI配置了防火墙)。

有点没有更多的想法...

谢谢。

+0

我假设你已经选中记事本没有在远程计算机的后台运行(查看任务管理器)?你没有连接到登录用户的桌面会话,所以它可能不会显示在屏幕上。 – Rhumborl

+0

感谢您的回复。是的,我检查了,但没有运行,它不会在后台运行。我也尝试将用户名和密码设置为“connOptions”,但仍然没有... – Idanis

+0

可以检查outParams [“returnValue”]和outParams [“processId”]的值吗? – prthrokz

回答

2

也许,你应该使用PsTools(从你的应用程序运行)?理想的远程部署。

+0

嗨。我听说过PsTools和PsExe,但我不喜欢使用外部工具... – Idanis

+0

PS工具比WMI路线更快地相信我。 – Derek