我正在尝试查看用户是否具有SeLoadDriver特权。我有PLUID:
PLUID pld;
LookupPrivilegeValue(NULL, SE_LOAD_DRIVER_NAME, pld);
但是现在我不确定如何从PLUID中获取 bool(boolean) 值,说明用户是否具有特权。我已经阅读了相关的方法,但它认为这可能是从PLUID值直接获取此方法的简便方法。
谢谢
最佳答案
比这更复杂。
首先,您需要获取流程 token 的特权集(通过调用GetTokenInformation()
),然后扫描从中获得的缓冲区(这是LUID_AND_ATTRIBUTES
结构的数组),以查找从LookupPrivilegeValue()
获得的LUID。然后,您可以使用找到的LUID_AND_ATTRIBUTES
并检查Attributes
是否包含必需的标志(在您的情况下为SE_PRIVILEGE_ENABLED
)。
请注意,在检查已启用的特权时,还应检查要检查的SE_PRIVILEGE_REMOVED
中未设置Attributes
;同时删除了SE_PRIVILEGE_REMOVED
和SE_PRIVILEGE_ENABLED
的特权,并且未启用...