文章编号:1905 /
更新时间:2024-12-30 18:34:57 / 浏览:
次
AdjustTokenPrivileges 函数可在进程的线程令牌中启用或禁用特权。
函数原型
BOOL AdjustTokenPrivileges(HANDLE TokenHandle, // 令牌句柄BOOL DisableAllPrivileges, // 是否禁用所有特权PTOKEN_PRIVILEGES NewState, // 新的特权状态DWORD BufferLength, // 缓冲区大小PTOKEN_PRIVILEGES PreviousState, // 上一个特权状态(可选)PDWORD ReturnLength // 返回缓冲区大小(可选));

| 值 | 描述 ||---|---|| `TRUE` |
成功。 || `FALSE` | 失败。有关
错误信息,请调用 `GetLast
error`。 |
备注
调用此函数需要 `SE_ASSIGNPRIMARYTOKEN_PRIVILEGE` 特权。启用或禁用特权不会立即影响调用线程。相反,它影响后续操作,这些操作会检查令牌特权。如果 `DisableAllPrivileges` 为 `TRUE`,则禁用所有特权,
包括启用或禁用的特权。如果 `NewState` 为 `NULL`,则不修改任何特权。`PreviousState` 缓冲区必须足以存储所有当前启用的特权。
示例
以下示例演示如何启用和禁用特权:```cppinclude
include
// 启用 "SeDebugPrivilege" 特权BOOL EnablePrivilege(HANDLE hToken, LPCTSTR lpszPrivilege){TOKEN_PRIVILEGES tp;LUID luid;if (!LookupPrivilegeValue(NULL, lpszPrivilege, &luid)){printf("LookupPrivilegeValue error: %u\n", GetLastError());return FALSE;}tp.PrivilegeCount = 1;tp.Privileges[0].Luid = luid;tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;if (!AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(TOKEN_PRIVILEGES),NULL,NULL)){printf("AdjustTokenPrivileges error: %u\n", GetLastError());return FALSE;}return TRUE;}// 禁用 "SeDebugPrivilege" 特权BOOL DisablePrivilege(HANDLE hToken, LPCTSTR lpszPrivilege){TOKEN_PRIVILEGES tp;LUID luid;if (!LookupPrivilegeValue(NULL, lpszPrivilege, &luid)){printf("LookupPrivilegeValue error: %u\n", GetLastError());returnFALSE;}tp.PrivilegeCount = 1;tp.Privileges[0].Luid = luid;tp.Privileges[0].Attributes = 0;if (!AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(TOKEN_PRIVILEGES),NULL,NULL)){printf("AdjustTokenPrivileges error: %u\n", GetLastError());return FALSE;}return TRUE;}int main(){HANDLE hToken = NULL;if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)){printf("OpenProcessToken error: %u\n", GetLastError());return 1;}if (EnablePrivilege(hToken, SE_DEBUG_NAME)){printf("Enabled SeDebugPrivilege\n");}if (DisablePrivilege(hToken, SE_DEBUG_NAME)){printf("Disabled SeDebugPrivilege\n");}CloseHandle(hToken);return 0;}```
相关标签:
adjustment、
调整令牌特权、
AdjustTokenPrivileges、
本文地址:https://www.qianwe.com/article/dcd7bd01cec6c1f956f5.html
上一篇:adjusttokenprivileges调整令牌特权adjust...
下一篇:提交更改提交更改姓名申请多久去取...