Функция AdjustTokenPrivileges

Declare Function AdjustTokenPrivileges Lib "advapi32" _
    (ByVal TokenHandle As Long, _
    ByVal DisableAllPrivileges As Long,  _
    NewState As TOKEN_PRIVILEGES,  _
    ByVal BufferLength As Long, _
    PreviousState As TOKEN_PRIVILEGES,  _
    ReturnLength As Long) As Long

Функция AdjustTokenPrivileges запрещает или делает доступным привилегии для заданного маркера доступа (access token). Функция AdjustTokenPrivileges не может добавлять новые привилегии в маркер доступа. Она может только включать или отключать уже существующие привилегии в маркере. Для получения информации о имеющихся в маркере доступах привилегиях, можно воспользоваться функцией GetTokenInformation

Возвращаемое значение

В успешном случае функция возвращает ненулевое значение. Для получения подробной информации о том добавила ли функция указанные привилегии нужно вызвать функцию GetLastError, которая вернет одно из следующих значений.

ERROR_SUCCESSФункция добавила все указанные ей привилегии
ERROR_NOT_ALL_ASSIGNEDМаркер не обладает одной или более привилегиями указанными в параметре NewState

В случае ошибки функция возвращает 0 (для получения кода ошибки используйте GetLastError)

Параметры

TokenHandle
Описатель маркера доступа (access token), привилегии которого должны быть изменены. Маркер доступа должен обладать привилегией TOKEN_ADJUST_PRIVILEGES. Если в параметре PreviousState используется ненулевое значение, маркер еще должен иметь доступ TOKEN_QUERY
DisableAllPrivileges
Этот параметр позволяет отключить все привилегии маркера доступа. Если в этот параметр передать значение TRUE, функция отключает все привилегии и при этом игнорируется параметр NewState. Если параметр передано значение FALSE, то функция изменяет текущие привилегии маркера доступа, используя информацию параметра NewState.
NewState
Указатель на структуру TOKEN_PRIVILEGES, содержащую набор привилегий и других атрибутов. Если параметру DisableAllPrivileges передано значение FALSE, функция включает или отключает привилегии в маркере доступа. А добавив атрибут SE_PRIVILEGE_ENABLED в структуре TOKEN_PRIVILEGES, функция включает привилегии. Ну а если параметр DisableAllPrivileges установлен в TRUE, то функция игнорирует текущий параметр
BufferLength
Размер буфера в байтах, указатель на который, передается в параметре PreviousState. Этот параметр может быть равен 0, если параметр PreviousState тоже установлен в 0
PreviousState
Указатель на буффер, который функция заполняет структурой TOKEN_PRIVILEGES. Структура содержит предыдущие установки тех привилегий, состояние которых изменила функция. Этот параметр может быть равен 0
ReturnLength
Указатель на переменную, содержащую требуемый размер в байтах, буфера, который передается в параметр PreviousState. Значение текущего параметра может быть равен 0, если параметр PreviousState так же равен 0

Пример

Смотри пример Программное выключение компьютера

Смотри также

LookupPrivilegeDisplayName, LookupPrivilegeName

Категория

Доступ

Реклама