OpenProcess / SetProcessAffinityMask для процесса, запущенного моим сервисом - PullRequest
1 голос
/ 19 февраля 2010

В моем manager.exe я пытаюсь изменить загрузку процессора моего worker.exe, который запускается моим service.exe. Service.exe выполняется под системной учетной записью, а manager.exe - под учетной записью пользователя, вошедшего в систему.

Когда я вызываю OpenProcess в manager.exe с PID работника, я получаю NULL для procHandle:

HANDLE procHandle = OpenProcess (PROCESS_SET_INFORMATION, 0, pid);

Используя GetLastError (), я вижу, что получил ошибку Access Denied.

Есть ли способы обойти это? Могу ли я каким-то образом изменить worker.exe, чтобы предоставить другим процессам полный контроль над собой?

1 Ответ

0 голосов
/ 19 февраля 2010

Вам не нужно звонить OpenProcess.

Служба уже должна иметь рабочий дескриптор с полным разрешением, когда она вызывала CreateProcessAsUser или CreateProcessWithLogonW.Используйте DuplicateHandle, чтобы сделать версию этого дескриптора пригодной для использования процессом менеджера, а затем попросите службу отправить этот дескриптор менеджеру.У сервиса уже есть дескриптор менеджера, верно?Это потребуется для DuplicateHandle.

или попросите менеджера обратиться в службу поддержки за изменением рабочего процесса.

...