Sto usando WMI to start a process on a remote machine. La chiamata per creare il processo ritorna immediatamente e ottengo anche l'id del processo sulla macchina remota.WaitForExit per un processo su un computer remoto
Desidero attendere il completamento del processo remoto. Un'opzione consisterebbe nel sondare se esiste ancora un processo sulla macchina remota con l'ID specificato.
Tuttavia, mi chiedevo se c'è un modo migliore per raggiungere questo obiettivo, magari utilizzando le funzioni native di WinAPI?
Solo per ulteriori informazioni, questo è il codice che sono attualmente in uso per avviare il processo remoto:
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);
Si dovrebbe includere wWatcher e MBOobj in uno statista "using" – Simon