AdjustTokenGroups 函数 (securitybaseapi.h)

AdjustTokenGroups 函数启用或禁用指定访问令牌中已存在的组。 若要启用或禁用访问令牌中的组,需要访问TOKEN_ADJUST_GROUPS。

语法

BOOL AdjustTokenGroups(
  [in]            HANDLE        TokenHandle,
  [in]            BOOL          ResetToDefault,
  [in, optional]  PTOKEN_GROUPS NewState,
  [in]            DWORD         BufferLength,
  [out, optional] PTOKEN_GROUPS PreviousState,
  [out, optional] PDWORD        ReturnLength
);

parameters

[in] TokenHandle

访问令牌的句柄,其中包含要启用或禁用的组。 句柄必须具有对令牌TOKEN_ADJUST_GROUPS访问权限。 如果 PreviousState 参数不为 NULL,则句柄还必须具有TOKEN_QUERY访问权限。

[in] ResetToDefault

指示组是否设置为默认启用和禁用状态的布尔值。 如果此值为 TRUE,则组将设置为其默认状态,并忽略 NewState 参数。 如果此值为 FALSE,则根据 NewState 参数指向的信息设置组。

[in, optional] NewState

指向包含要启用或禁用的组 的TOKEN_GROUPS 结构的指针。 如果 ResetToDefault 参数为 FALSE,则函数会将每个组设置为 TOKEN_GROUPS 结构中该组的 SE_GROUP_ENABLED 属性的值。 如果 ResetToDefaultTRUE,则忽略此参数。

[in] BufferLength

PreviousState 参数指向的缓冲区的大小(以字节为单位)。 如果 PreviousState 参数为 NULL,则此参数可以为

[out, optional] PreviousState

指向缓冲区的指针,该缓冲区接收包含函数修改的任何组的先前状态的 TOKEN_GROUPS 结构。 也就是说,如果此函数修改了某个组,该组及其以前的状态将包含在 PreviousState 引用的TOKEN_GROUPS结构中。 如果 TOKEN_GROUPSGroupCount 成员为零,则此函数未更改任何组。 此参数可以为 NULL。

如果指定了缓冲区,但它不包含足够的空间来接收修改组的完整列表,则不会更改任何组状态,并且函数将失败。 在这种情况下,函数将 ReturnLength 参数指向的变量设置为保存修改组的完整列表所需的字节数。

[out, optional] ReturnLength

指向变量的指针,该变量接收 PreviousState 参数指向的缓冲区所需的实际字节数。 此参数可以为 NULL ,如果 PreviousStateNULL,则忽略此参数。

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

注解

在 PreviousState 参数中检索的信息的格式设置为TOKEN_GROUPS结构。 这意味着,在后续调用 AdjustTokenGroups 函数时,可以将指向缓冲区的指针作为 NewState 参数传递,从而还原组的原始状态。

NewState 参数可以列出访问令牌中不存在的要更改的组。 这不会影响成功修改令牌中的组。

AdjustTokenGroups 函数不能禁用TOKEN_GROUPS结构中具有 SE_GROUP_MANDATORY 属性的组。 请改用 CreateRestrictedToken

不能启用具有 SE_GROUP_USE_FOR_DENY_ONLY 属性的组。

要求

   
最低受支持的客户端 Windows XP [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 securitybaseapi.h (包括 Windows.h)
Library Advapi32.lib
DLL Advapi32.dll

请参阅

访问控制概述

AdjustTokenPrivileges

基本访问控制函数

CreateRestrictedToken

GetTokenInformation

OpenProcessToken

OpenThreadToken

SetTokenInformation

TOKEN_GROUPS