WIN API用户权限C++
问题描述:
我试图查看用户是否具有SeLoadDriver权限。我已经得到了PLUID:WIN API用户权限C++
PLUID pld;
LookupPrivilegeValue(NULL, SE_LOAD_DRIVER_NAME, pld);
但现在我不知道怎么去从PLUID说明该用户,还是不行,特权一个bool。我已经阅读了相关的方法,但它认为这可能是直接从PLUID值中获取该方法的一种简单方法。
谢谢
答
这是一个比这更多的参与。
首先,你需要获得进程令牌的权限设置(通过调用GetTokenInformation()
),那么你扫描你从那个了(这是LUID_AND_ATTRIBUTES
结构的数组),为您从LookupPrivilegeValue()
得到LUID缓冲区。然后,您可以使用您找到的LUID_AND_ATTRIBUTES
,并检查Attributes
是否包含所需的标志(您的情况为SE_PRIVILEGE_ENABLED
)。
请注意,当您检查启用的权限时,您还应该检查您正在检查的Attributes
中是否设置了SE_PRIVILEGE_REMOVED
;同时拥有SE_PRIVILEGE_REMOVED
和SE_PRIVILEGE_ENABLED
的特权已被删除且未启用...