【问题标题】:WIN API User Privilege C++WIN API 用户权限 C++
【发布时间】:2010-01-18 09:18:59
【问题描述】:
我正在尝试查看用户是否具有 SeLoadDriver 权限。我有 PLUID :
PLUID pld;
LookupPrivilegeValue(NULL, SE_LOAD_DRIVER_NAME, pld);
但现在我不确定如何从 PLUID 中获取一个布尔值,说明用户是否拥有该权限。我已经阅读了相关的方法,但它认为这可能是一种直接从 PLUID 值中获取它的简单方法。
谢谢
【问题讨论】:
标签:
c++
winapi
privileges
【解决方案1】:
比这更复杂一点。
首先,您需要获取进程令牌的权限集(通过调用 GetTokenInformation()),然后扫描从中获得的缓冲区(这是一个 LUID_AND_ATTRIBUTES 结构的数组)以查找从中获得的 LUID LookupPrivilegeValue()。然后,您可以使用您找到的LUID_AND_ATTRIBUTES 并检查Attributes 是否包含所需的标志(在您的情况下为SE_PRIVILEGE_ENABLED)。
请注意,当您检查启用的权限时,您还应该检查SE_PRIVILEGE_REMOVED 是否未在您检查的Attributes 中设置;一个同时具有SE_PRIVILEGE_REMOVED 和SE_PRIVILEGE_ENABLED 的权限已被删除且未启用...