Ich verwende WMI to start a process on a remote machine. Der Aufruf zum Erstellen des Prozesses wird sofort zurückgegeben und ich erhalte auch die ID des Prozesses auf dem Remotecomputer.WaitForExit für einen Prozess auf einem Remote-Computer
Ich möchte warten, bis der Remote-Prozess abgeschlossen ist. Eine Option wäre, abzufragen, ob ein Prozess auf dem entfernten Rechner mit der angegebenen ID noch existiert.
Allerdings habe ich mich gefragt, ob es einen besseren Weg gibt, dies zu erreichen, vielleicht mit nativen WinAPI-Funktionen?
Nur für zusätzliche Informationen, das ist der Code, den ich zur Zeit den Remote-Prozess starten bin mit:
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);
du solltest wWatcher und MBOobj in einen "using" statesmen einbinden – Simon