나는 WMI to start a process on a remote machine을 사용하고 있습니다. 프로세스를 생성하는 호출이 즉시 반환되며 원격 시스템에서 프로세스의 ID도 얻습니다.원격 컴퓨터의 프로세스 WaitForExit
원격 처리가 완료 될 때까지 기다리고 싶습니다. 한 가지 옵션은 주어진 id를 가진 원격 기계의 프로세스가 여전히 존재하는지 여부를 폴링하는 것입니다.
그러나이 방법을 사용할 수있는 더 좋은 방법이 있는지, 궁극적으로 기본 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);
uWatcher와 MBOobj를 "using"상태로 랩핑해야합니다. – Simon