NtPrivilegeCheck 函数 (ntifs.h)
NtPrivilegeCheck 保留供系统使用。
语法
__kernel_entry NTSYSCALLAPI NTSTATUS NtPrivilegeCheck(
[in] HANDLE ClientToken,
[in, out] PPRIVILEGE_SET RequiredPrivileges,
[out] PBOOLEAN Result
);
参数
[in] ClientToken
表示客户端尝试访问的令牌对象的句柄。 必须从通信会话层(例如从 LPC 端口或本地命名管道)获取此句柄,以防止可能的安全策略冲突。
[in, out] RequiredPrivileges
指向 PRIVILEGE_SET 结构的指针。 此结构的 Privilege 成员是LUID_AND_ATTRIBUTES结构的数组。 在调用 SePrivilegeCheck之前,请使用 Privilege 数组来指示要检查的一组权限。 如果必须启用所有特权,请将 Control 成员设置为PRIVILEGE_SET_ALL_NECESSARY;或将其设置为零(如果足够,可以启用任何一个特权)。
[out] Result
接收一个布尔标志,指示客户端是否具有所有指定的特权。 TRUE 值表示客户端具有所有指定权限;否则返回值为 FALSE。
返回值
NtPrivilegeCheck 成功完成时返回STATUS_SUCCESS。 否则,它将返回错误代码,如以下代码。
返回代码 | 描述 |
---|---|
STATUS_PRIVILEGE_NOT_HELD | 调用方没有足够的权限来使用此特权系统服务。 |
言论
访问令牌包含与令牌关联的帐户持有的特权列表。 可以启用或禁用这些特权;大多数默认处于禁用状态。 NtPrivilegeCheck 仅检查已启用的权限。 若要获取访问令牌持有的所有已启用和禁用权限的列表,请调用 SeQueryInformationToken。
有关安全和访问控制的详细信息,请参阅适用于驱动程序开发人员 Windows 安全模型,以及有关 Windows SDK 中这些主题的文档。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows XP |
标头 | ntifs.h |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |