函数参考


_Security__AdjustTokenPrivileges

启用或禁用指定的访问令牌权限

#include <Security.au3>
_Security__AdjustTokenPrivileges($hToken, $fDisableAll, $pNewState, $iBufferLen [, $pPrevState = 0 [, $pRequired = 0]])

参数

$hToken 访问令牌的句柄,它包含要修改的权限
$fDisableAll 如果为 True,该函数禁用所有特权,并且忽略 $pNewState 参数.
如果为 False,该函数依据 $pNewState 参数的指向修改权限信息.
$pNewState $tagTOKEN_PRIVILEGES 结构指针,它包含特权及其属性.
$iBufferLen $pNewState 指向的缓冲区字节大小
$pPrevState [可选参数] $tagTOKEN_PRIVILEGES 结构指针,
指定在函数修改前的特权状态. 可以为 0
$pRequired [可选参数] 变量指针, 用于接收 $pPrevState 指定的缓冲区数据,
大小以字节为单位. 如果 $pPrevState 为 0, 这个参数可以是 0.

返回值

成功: 返回 True
失败: 返回 False

注意/说明

函数不能为访问令牌添加新的权限.
只是启用或禁用令牌的现行特权.

相关

$tagTOKEN_PRIVILEGES

详情参考

在MSDN中搜索


示例/演示


#RequireAdmin ; for this example to have sense

#include <SecurityConstants.au3>
#include <Security.au3>
#include <WinAPI.au3>

Local $hToken = _Security__OpenProcessToken(_WinAPI_GetCurrentProcess(), $TOKEN_ALL_ACCESS)
If $hToken Then
    ; $hToken is this process' token with $TOKEN_ALL_ACCESS access

    ; Disable all privileges for this token
    If _Security__AdjustTokenPrivileges($hToken, True, 0, 0) Then
        ;... Do whatever with this token now and here...
        MsgBox(262144, "TokenPrivileges", "All TokenPrivileges disabled!")
    EndIf

    ; Close handle when done
    _WinAPI_CloseHandle($hToken)
EndIf