Używam WMI to start a process on a remote machine. Wywołanie procesu jest natychmiastowe, a ja otrzymuję identyfikator procesu na zdalnym komputerze.WaitForExit dla procesu na zdalnym komputerze
Chciałbym czekać na zakończenie procesu zdalnego. Jedną opcją byłoby zbadanie, czy proces na zdalnym komputerze o podanym identyfikatorze nadal istnieje.
Jednak zastanawiałem się, czy istnieje lepszy sposób, aby to osiągnąć, może używając natywnych funkcji WinAPI?
Wystarczy uzyskać dodatkowe informacje, jest to kod, który Obecnie używam, aby uruchomić zdalny proces:
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);
Powinieneś owinąć wWatcher i MBOobj w "przy użyciu" statysty – Simon