AdjustTokenGroups功能调整指定访问令牌中的组。启用或禁用访问令牌中的组需要TOKEN_ADJUST_GROUPS访问。
BOOL AdjustTokenGroups(
HANDLE 【TokenHandle】, | //处理包含组的令牌 |
BOOL 【ResetToDefault】, | //标志为默认设置 |
PTOKEN_GROUPS 【NewState】, | //新地址信息的地址 |
DWORD 【BufferLength】, | //以前信息的缓冲区大小 |
PTOKEN_GROUPS 【PreviousState】, | //以前的组信息的地址 |
PDWORD 【ReturnLength】 | //所需缓冲区大小的地址 |
); |
参数
【TokenHandle】
标识包含要修改的组的访问令牌。
【ResetToDefault】
指定组是否被设置为默认的启用和禁用状态。如果此值为TRUE,则将组设置为其默认状态,并忽略【NewState】参数。如果此值为FALSE,则根据【NewState】参数指向的信息设置组。
【NewState】
指向TOKEN_GROUPS结构,其中包含要设置其状态的组。如果【ResetToDefault】参数为FALSE,则该函数将每个组设置为TOKEN_GROUPS结构中该组的SE_GROUP_ENABLED标志的值。如果【ResetToDefault】为TRUE,则忽略此参数。
【BufferLength】
指定【PreviousState】参数指向的缓冲区的大小(以字节为单位)。如果【PreviousState】参数为NULL,则此参数可以为NULL。
【PreviousState】
指向缓冲区,接收包含功能修改的任何组的先前状态的TOKEN_GROUPS结构。必须打开TOKEN_QUERY访问权限才能使用此参数。此参数可以为NULL。
如果指定了缓冲区,但它没有足够的空间来接收修改的组的完整列表,则不会更改组状态,并且该函数失败。在这种情况下,该函数将【ReturnLength】参数指向的变量设置为保存修改组的完整列表所需的字节数。
【ReturnLength】
指向由该函数设置的变量,该变量包含【PreviousState】参数指向的缓冲区所需的实际字节数。此参数可以为NULL,如果【PreviousState】为NULL,则此参数将被忽略。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
备注
在【PreviousState】参数中检索的信息格式为TOKEN_GROUPS结构。这意味着在后续调用AdjustTokenGroups函数时,可以将【NewState】参数传递给缓冲区的指针,从而恢复组的原始状态。
【NewState】参数可以列出在更改访问令牌中不存在的组。这不会影响令牌中组的成功修改。
强制组不能被禁用。它们由TOKEN_GROUPS结构中的SE_GROUP_MANDATORY标志标识。如果尝试禁用任何强制性组,AdjustTokenGroups将失败,并保留所有组的状态。
也可以看看
AdjustTokenPrivileges, GetTokenInformation, OpenProcessToken, OpenThreadToken, SetTokenInformation, TOKEN_GROUPS