AdjustTokenPrivileges

AdjustTokenPrivileges
AdjustTokenPrivileges这个函数启用或禁止 指定访问令牌的特权。
启用或禁用特权一个有TOKEN_ADJUST_PRIVILEGES访问的访问令牌.
BOOL AdjustTokenPrivileges(
HANDLE TokenHandle , //包含特权的句柄
BOOL DisableAllPrivileges ,//禁用所有权限标志
PTOKEN_PRIVILEGES NewState ,//新特权信息的指针(结构体)
DWORD BufferLength , //缓冲数据大小,以字节为单位的PreviousState的缓存区(sizeof)
PTOKEN_PRIVILEGES PreviousState ,//接收被改变特权当前状态的Buffer
PDWORD ReturnLength //接收PreviousState缓存区要求的大小
);
参数
TokenHandle
包含要修改特权的访问令牌的标识(句柄).这个句柄必须有TOKEN_ADJUST_PRIVILEGES访问令牌.如果PreviousState不是NULL,这个句柄还必须有TOKEN_QUERY访问特权.
DisableAllPrivileges
标志这个函数是否禁用该令牌的所有特权.如果为TRUE,这个函数禁用所有特权,NewState参数无效.如果为假,以NewState参数 指针的信息为基础来修改特权.
NewState
一个 TOKEN_PRIVILEGES 结构体指针指定了一组特权和他们的属性.
如果参数DisableAllPrivileges为FALSE, AdjustTokenPrivileges 启用或禁用这些令牌的特权.
如果你给一个特权设置了SE_PRIVILEGE_ENABLED的属性,这个函数将启动特权,否则禁用特权.
如果DisableAllPrivileges为TRUE,这个参数无效.
BufferLength
标志参数PreviousState指针以字节大小缓存区(sizeof).
如果参数PreviousState是NULL,这个参数可以为NULL.
PreviousState
这个函数填充一个TOKEN_PRIVILEGES 结构体指针】,它包括该函数修改之前任何特权状态.这个参数可以为NULL.
如果指定的缓冲区太小,无法收到完整的修改权限列表,这个函数失败并不会修改任何特权.
这个函数设置了一个 拥有修改权限完成列表【 参数ReturnLength 】的字节数 的 指针变量.[结果的Buffer]
ReturnLength
接收 参数PreviousState的缓存区指针的 字节大小 的 变量指针(长度指针).
如果PreviousState为NULL,这个参数可以为NULL.
返回值
如果这个函数成功,返回非0.为了确定这个函数是否修改了所有指定的特权,可以调用 GetLastError函数,当这个函数返回下面的值之一时就代表函数成功:
描述
ERROR_SUCCESS
这个函数修改了所有指定的特权。
ERROR_NOT_ALL_ASSIGNED
这个令牌没有参数NewState里指定一个或多个的权限。(一个或多个没有修改成功).
即使权限没有被修改。这个函数也可能成功(返回这个error值)
表明 参数PreviousState 被修改。
如果这个函数失败,返回0.要得到更多的错误信息,调用 GetLastError.
备注
AdjustTokenPrivileges函数不能添加新的特权到访问令牌.它只能启用或禁用令牌现行的令牌.要想确定这个令牌的特权,调用 GetTokenInformation函数.
请注意,参数NewState可以不给令牌指定权限,这不会导致函数失败.
在这种情况下,这个函数修改令牌现有的特权,其他特权无效,并成功返回.
调用 GetLastError函数,以确定这个函数修改了所有指定的特权.
PreviousState参数表明特权被修改.
参数PreviousState 返回一个 包含 修改权限 原始状态的 结构体 TOKEN_PRIVILEGES,
这样就可以在随后调用 AdjustTokenPrivileges函数时,传递PreviousState指针到 参数NewState ,来恢复原来的状态.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: adjusttokenprivileges是一个Windows API函数,用于修改进程或线程的访问令牌的权限。它可以用于提升或降低进程或线程的权限级别,以便执行某些操作。该函数需要管理员权限才能使用。 ### 回答2: adjusttokenprivileges是一个Windows API函数,它用于调整访问令牌的特权级别。访问令牌是在用户登录到操作系统时生成的,用于识别和授权用户权限的一种机制。 通过使用adjusttokenprivileges函数,我们可以改变访问令牌的权限级别。这在开发和管理程序和系统时非常有用,因为它允许我们对系统中的用户和资源进行更精细的控制。 该函数接受三个参数:访问令牌的句柄、是否开启或关闭特权以及传递的特权信息。通过指定访问令牌的句柄,我们可以确定要更改哪个用户或进程的权限级别。通过将特权参数设置为开启或关闭,我们可以选择是否启用或禁用特权。最后,通过特权信息参数,我们可以指定要更改的特权的详细信息。 在实际应用中,我们可以使用这个函数来管理用户的权限,例如提升普通用户的权限以执行需要管理员权限的操作。我们还可以使用它来禁用特定的特权,以确保安全性和系统稳定性。 总之,adjusttokenprivileges函数是一个强大的API函数,可以用来精确地控制和管理访问令牌的权限级别。通过使用这个函数,我们可以更好地管理系统资源,提高系统的安全性和可靠性。 ### 回答3: adjusttokenprivileges是一个Windows API函数,用于修改访问令牌的权限。访问令牌是操作系统为每个进程分配的一种数据结构,用于标识和控制进程的访问权限。调用adjusttokenprivileges函数可以修改进程的访问令牌,从而改变进程的权限。 adjusttokenprivileges函数需要两个参数:访问令牌句柄和权限调整结构体。访问令牌句柄可以使用函数opentoken来获取,而权限调整结构体包含所需修改的权限信息。 adjusttokenprivileges函数的作用是将指定的权限应用于访问令牌。权限可以是普通权限,如读取、写入等,也可以是特权权限,如在系统级别操作等。 调用adjusttokenprivileges函数后,需要使用函数getlasterror来检查是否调用成功。成功返回true,否则返回false。如果成功,还需要调用函数关闭打开的令牌句柄。 adjusttokenprivileges函数的使用场景举例:当进程需要执行操作,但当前没有足够的权限时,可以通过该函数临时提升权限,以满足操作的执行要求。但需要注意的是,修改权限可能导致安全风险,需要确保调用的正确性和安全性。 总之,adjusttokenprivileges函数是一个用于修改访问令牌权限的重要函数,可以使进程具备更高的权限,以满足更多的操作要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值