PrivilegeCheck函数测试由特定访问令牌表示的安全上下文,以发现它是否包含指定的权限。服务器应用程序通常会调用此函数来检查客户端访问令牌的权限。
BOOL PrivilegeCheck(
HANDLE 【ClientToken】, | //客户端访问令牌的句柄 |
PPRIVILEGE_SET 【RequiredPrivileges】, | //特权地址 |
LPBOOL 【// address of flag for result】 | //结果地址 |
); |
参数
【ClientToken】
标识表示客户端进程的访问令牌。必须通过打开假冒客户端的线程的令牌来获取此句柄。必须打开令牌才能进行TOKEN_QUERY访问。
【RequiredPrivileges】
指向PRIVILEGE_SET结构,指定所需的权限。
检查指定的访问令牌以查看哪些指定的权限存在。当在访问令牌中找到PRIVILEGE_SET结构中指定的权限时,该函数将在相应的LUID_AND_ATTRIBUTES结构中为该权限设置SE_PRIVILEGE_USED_FOR_ACCESS属性。
【// address of flag for result】
指向一个标志,该函数设置为指示访问令牌是否包含任何或所有指定的权限。如果在【RequiredPrivileges】参数指向的PRIVILEGE_SET结构的PRIVILEGE_SET结构的控制成员中指定了PRIVILEGE_SET_ALL_NECESSARY,则只有在访问令牌中存在所有请求的权限时,此标志才为TRUE。如果未指定PRIVILEGE_SET_ALL_NECESSARY,并且如果存在任何特权,则该标志为TRUE。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
也可以看看
AccessCheck, AccessCheckAndAuditAlarm, AreAllAccessesGranted, AreAnyAccessesGranted, LookupPrivilegeDisplayName, LookupPrivilegeName, LookupPrivilegeValue, LUID_AND_ATTRIBUTES, ObjectPrivilegeAuditAlarm, PRIVILEGE_SET, PrivilegedServiceAuditAlarm