c++ - 如何使用 GetTokenInformation () 恢复权限?C++
问题描述
我想从用户名中恢复所有权限。例如权限:“SE_ASSIGN_PRIMARY_TOKEN_PRIVILEGE”、“SE_AUDIT_PRIVILEGE”、“SE_DEBUG_PRIVILEGE”...我在 microsoft 文档上搜索,发现 GetTokenInformation() https://docs.microsoft.com/en-us/windows/desktop/api/ securitybaseapi/nf-securitybaseapi-gettokeninformation但我不明白如何访问所有权限并查看此权限的值。是否有人已经通过示例使用此方法或如何继续?
解决方案
你可以试试下面的代码:
#include <iostream>
#include <windows.h>
#include <tchar.h>
BOOL CheckWindowsPrivilege(const TCHAR *Privilege)
{
/* Checks for Privilege and returns True or False. */
LUID luid;
PRIVILEGE_SET privs;
HANDLE hProcess;
HANDLE hToken;
hProcess = GetCurrentProcess();
if (!OpenProcessToken(hProcess, TOKEN_QUERY, &hToken)) return FALSE;
if (!LookupPrivilegeValue(NULL, Privilege, &luid)) return FALSE;
privs.PrivilegeCount = 1;
privs.Control = PRIVILEGE_SET_ALL_NECESSARY;
privs.Privilege[0].Luid = luid;
privs.Privilege[0].Attributes = SE_PRIVILEGE_ENABLED;
BOOL bResult;
PrivilegeCheck(hToken, &privs, &bResult);
return bResult;
}
int wmain(void)
{
if (!CheckWindowsPrivilege(SE_ASSIGNPRIMARYTOKEN_NAME))
{
wprintf(L"I do not have SeAssignPrimaryTokenPrivilege!\n");
return 1;
}
wprintf(L"I do have SeAssignPrimaryTokenPrivilege!\n");
return 0;
}
然后调用SetPrivilege
(不是win32 api,而是MSDN示例中的函数)
推荐阅读
- python - 类如何在递归函数中工作?
- javascript - JSFiddle、CodePen 上的工作代码,但不在我的电脑上
- javascript - 正则表达式日期 DD/MM/YYYY
- php - PHP多个字符串正则表达式在“if”条件下
- javascript - 使用 Javascript 搜索 Wordpress 媒体
- java - 返回列表中的项目
- r - 用数据框 (R) 中的 NA 替换 X 个连续重复的零值
- android-studio - webview 白名单 url 可能来自外部文件
- python - 为什么 numpy.loadtxt() / numpy.genfromtxt() 在空格字符之后截断这一行,中间列?
- mysql - 我在加入后尝试分组时收到错误 1055