开发者

OpenProcess / SetProcessAffinityMask on process started by my service

In my manager.exe, I'm trying to change the CPU usage of my worker.exe, which is started by my service.exe. Service.exe is running under the System Account, while manager.exe is running under the logged in user's account.

When I call OpenProcess in manager.exe with worker.exe's PID, I get NULL for procHandle:

HANDLE开发者_StackOverflow社区 procHandle = OpenProcess(PROCESS_SET_INFORMATION, 0, pid);

Using GetLastError() I see that I got an Access Denied error.

Any ways around this? Can I somehow modify worker.exe to grant other processes full control over itself?


You shouldn't have to call OpenProcess.

The service should already have a full-permission handle to the worker from when it called CreateProcessAsUser or CreateProcessWithLogonW. Use DuplicateHandle to make a version of that handle suitable for use by the manager process, and then have the service send that handle to the manager. The service already has a handle to the manager, right? It will need that for DuplicateHandle.

Or have the manager ask the service to change the worker process.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜