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

另请参阅

LUID_AND_ATTRIBUTES

PRIVILEGE_SET

SECURITY_SUBJECT_CONTEXT

SeAccessCheck

SeAppendPrivileges

SeFreePrivileges

SeQueryInformationToken

SeSinglePrivilegeCheck