Я использую WMI to start a process on a remote machine. Вызов для создания процесса немедленно возвращается, и я также получаю идентификатор процесса на удаленной машине.WaitForExit для процесса на удаленном компьютере
Я хотел бы дождаться завершения удаленного процесса. Один из вариантов - опросить, существует ли процесс на удаленном компьютере с данным идентификатором.
Однако мне было интересно, есть ли лучший способ достичь этого, возможно, используя собственные функции 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);
u должен обернуть wWatcher и MBOobj в «использование» statemen – Simon