我正在使用WMI to start a process on a remote machine。创建进程的调用会立即返回,并且我还会获得远程计算机上进程的标识。WaitForExit用于远程计算机上的进程
我想等待远程过程完成。一种选择是查询具有给定ID的远程机器上的进程是否仍然存在。
但是,我想知道是否有更好的方法来实现这一点,也许使用本机WinAPI功能?
只是为了更多的信息,这是我目前使用启动远程过程的代码:
ConnectionOptions connOptions = new ConnectionOptions();
connOptions.Impersonation = ImpersonationLevel.Impersonate;
connOptions.EnablePrivileges = true;
connOptions.Username = domainUserName;
connOptions.Password = password;
ManagementScope manScope = new ManagementScope(String.Format(@"\\{0}\ROOT\CIMV2", host), 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"] = commandLine;
ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null);
你应该将wWatcher和MBOobj包装在“使用”状态中 – Simon 2011-09-15 00:40:35