由我的服务启动的进程中的OpenProcess / SetProcessAffinityMask

时间:2010-02-19 17:25:21

标签: c++ windows openprocess

在我的manager.exe中,我正在尝试更改worker.exe的CPU使用率,这是由我的service.exe启动的。 Service.exe在系统帐户下运行,而manager.exe在登录用户的帐户下运行。

当我使用worker.exe的PID调用manager.exe中的OpenProcess时,procHandle得到NULL:

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

使用GetLastError()我看到我遇到了Access Denied错误。

有什么方法吗?我可以以某种方式修改worker.exe以授予其他进程完全控制自己吗?

1 个答案:

答案 0 :(得分:0)

您不必致电OpenProcess

该服务应该在调用CreateProcessAsUserCreateProcessWithLogonW时已拥有对该工作者的完全权限句柄。使用DuplicateHandle使该句柄的版本适合管理器进程使用,然后让服务将该句柄发送给管理器。该服务已经掌握了经理,对吧?它需要DuplicateHandle

或让经理要求服务部门更改工作流程。