gpt4 book ai didi

c++ - 如何使用 GetTokenInformation() 恢复权限? C++

转载 作者:行者123 更新时间:2023-11-28 01:21:30 26 4
gpt4 key购买 nike

我想恢复用户名的所有权限。例如特权:“SE_ASSIGN_PRIMARY_TOKEN_PRIVILEGE”、“SE_AUDIT_PRIVILEGE”、“SE_DEBUG_PRIVILEGE”……我搜索了微软文档,找到了 GetTokenInformation() https://learn.microsoft.com/en-us/windows/desktop/api/securitybaseapi/nf-securitybaseapi-gettokeninformation但我不明白如何访问所有特权并查看此特权的值(value)。请问有人已经在示例中使用了此方法吗?请问如何进行?

最佳答案

你可以试试下面的代码:

#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 示例中的函数)

关于c++ - 如何使用 GetTokenInformation() 恢复权限? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56043589/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com