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