2010-02-19 75 views
1

在我的manager.exe中,我試圖更改由我的service.exe啓動的我的worker.exe的CPU使用率。 Service.exe在系統帳戶下運行,而manager.exe在登錄用戶的帳戶下運行。由我的服務啓動的進程的OpenProcess/SetProcessAffinityMask

當我打電話OpenProcess與worker.exe的PID的manager.exe,我得到NULL爲procHandle:

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

使用GetLastError()我看到我有一個訪問被拒絕的錯誤。

任何解決方法?我可以以某種方式修改worker.exe以授予其他進程完全控制自己嗎?

回答

0

您不應該撥打OpenProcess

該服務應該已經擁有對該工作人員的完全許可句柄,該工作人員稱其爲CreateProcessAsUserCreateProcessWithLogonW。使用DuplicateHandle來創建適合經理進程使用的句柄版本,然後讓該服務將該句柄發送給經理。該服務已經向經理提供處理,對嗎?這將需要DuplicateHandle

或讓經理要求服務員更改工作流程。

+0

Service.exe啓動了此過程。我試圖從Manager.exe修改它。 – Warpin 2010-02-19 17:39:48

+0

對,對不起。之後我注意到了。我相應地更新了我的答案。 – 2010-02-19 17:41:07

+0

另一種可能性是,在創建worker.exe進程時,service.exe授予登錄用戶PROCESS_SET_INFORMATION權限在ACL中的權限。 – Michael 2010-02-19 17:51:51