我使用 Windows 挂钩向我的应用程序发送消息,系统上的每个应用程序都会通知该应用程序有关 Windows 事件的信息。
为了执行消息参数的编组,我使用共享内存。外部进程调用DuplicateHandle,但为了与我的应用程序实例共享句柄,它应调用具有 PROCESS_DUP_HANDLE 权限要求的OpenProcess 。
实际上,每个应用程序都可以使用这种架构发送消息,即使我需要为外部进程启用 SeDebugPrivilege。它实际上可以工作,除了没有 SeDebugPrivilege 令牌的“explorer”进程......
AdjustTokenPrivileges的文档指出:
AdjustTokenPrivileges 函数无法向访问令牌添加新权限。它只能启用或禁用令牌的现有权限。要确定令牌的权限,请调用 GetTokenInformation 函数。
所以,问题是......如何将 SeDebugPrivilege 令牌添加到“explorer”进程,或者如何允许“explorer”进程调用OpenProcess(PROCESS_DUP_HANDLE, FALSE, pId)
?