Función AdjustTokenPrivileges (securitybaseapi.h)
La función AdjustTokenPrivileges habilita o deshabilita los privilegios en el token de acceso especificado. La habilitación o deshabilitación de privilegios en un token de acceso requiere TOKEN_ADJUST_PRIVILEGES acceso.
Sintaxis
BOOL AdjustTokenPrivileges(
[in] HANDLE TokenHandle,
[in] BOOL DisableAllPrivileges,
[in, optional] PTOKEN_PRIVILEGES NewState,
[in] DWORD BufferLength,
[out, optional] PTOKEN_PRIVILEGES PreviousState,
[out, optional] PDWORD ReturnLength
);
Parámetros
[in] TokenHandle
Identificador del token de acceso que contiene los privilegios que se van a modificar. El identificador debe tener TOKEN_ADJUST_PRIVILEGES acceso al token. Si el parámetro PreviousState no es NULL, el identificador también debe tener TOKEN_QUERY acceso.
[in] DisableAllPrivileges
Especifica si la función deshabilita todos los privilegios del token. Si este valor es TRUE, la función deshabilita todos los privilegios y omite el parámetro NewState . Si es FALSE, la función modifica los privilegios en función de la información a la que apunta el parámetro NewState .
[in, optional] NewState
Puntero a una estructura TOKEN_PRIVILEGES que especifica una matriz de privilegios y sus atributos. Si el parámetro DisableAllPrivileges es FALSE, la función AdjustTokenPrivileges habilita, deshabilita o quita estos privilegios para el token. En la tabla siguiente se describe la acción realizada por la función AdjustTokenPrivileges , basada en el atributo privilege.
Si DisableAllPrivileges es TRUE, la función omite este parámetro.
[in] BufferLength
Especifica el tamaño, en bytes, del búfer al que apunta el parámetro PreviousState . Este parámetro puede ser cero si el parámetro PreviousState es NULL.
[out, optional] PreviousState
Puntero a un búfer que la función rellena con una estructura de TOKEN_PRIVILEGES que contiene el estado anterior de los privilegios que modifica la función. Es decir, si esta función ha modificado un privilegio, el privilegio y su estado anterior se encuentran en la estructura TOKEN_PRIVILEGES a la que hace referencia PreviousState. Si el miembro PrivilegeCount de TOKEN_PRIVILEGES es cero, esta función no ha cambiado ningún privilegio. Este parámetro puede ser NULL.
Si especifica un búfer demasiado pequeño para recibir la lista completa de privilegios modificados, se produce un error en la función y no ajusta ningún privilegio. En este caso, la función establece la variable a la que apunta el parámetro ReturnLength en el número de bytes necesarios para contener la lista completa de privilegios modificados.
[out, optional] ReturnLength
Puntero a una variable que recibe el tamaño necesario, en bytes, del búfer al que apunta el parámetro PreviousState . Este parámetro puede ser NULL si PreviousState es NULL.
Valor devuelto
Si la función se realiza correctamente, el valor devuelto es distinto de cero. Para determinar si la función ha ajustado todos los privilegios especificados, llame a GetLastError, que devuelve uno de los siguientes valores cuando la función se realiza correctamente:
Código devuelto | Descripción |
---|---|
|
La función ajustó todos los privilegios especificados. |
|
El token no tiene uno o varios de los privilegios especificados en el parámetro NewState . La función puede tener éxito con este valor de error incluso si no se ajustaron privilegios. El parámetro PreviousState indica los privilegios que se ajustaron. |
Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.
Comentarios
La función AdjustTokenPrivileges no puede agregar nuevos privilegios al token de acceso. Solo puede habilitar o deshabilitar los privilegios existentes del token. Para determinar los privilegios del token, llame a la función GetTokenInformation .
El parámetro NewState puede especificar privilegios que el token no tiene, sin provocar un error en la función. En este caso, la función ajusta los privilegios que tiene el token y omite los demás privilegios para que la función se realice correctamente. Llame a la función GetLastError para determinar si la función ha ajustado todos los privilegios especificados. El parámetro PreviousState indica los privilegios que se ajustaron.
El parámetro PreviousState recupera una estructura de TOKEN_PRIVILEGES que contiene el estado original de los privilegios ajustados. Para restaurar el estado original, pase el puntero PreviousState como parámetro NewState en una llamada posterior a la función AdjustTokenPrivileges .
Ejemplos
Para ver un ejemplo que usa esta función, consulte Habilitación y deshabilitación de privilegios.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP [aplicaciones de escritorio | aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | securitybaseapi.h (incluya Windows.h) |
Library | Advapi32.lib |
Archivo DLL | Advapi32.dll |
Consulte también
Información general del control de acceso