Estoy usando WMI to start a process on a remote machine. La llamada para crear el proceso vuelve inmediatamente y también obtengo la identificación del proceso en la máquina remota.WaitForExit para un proceso en una computadora remota
Me gustaría esperar a que se complete el proceso remoto. Una opción sería sondear si aún existe un proceso en la máquina remota con la identificación dada.
Sin embargo, me preguntaba si hay una mejor manera de lograr esto, tal vez usando funciones WinAPI nativas.
Sólo para obtener información adicional, este es el código que estoy utilizando actualmente para iniciar el proceso 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);
u debe envolver wWatcher y MBOobj en un estado "en uso" – Simon