#include <iostream>
#include <windows.h>
using namespace std;
bool UpPrivilegeValue()
{
//OpenProcessToken()函数用来打开与进程相关联的访问令牌
HANDLE hToken = nullptr;
if (FALSE == OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &hToken))
{
return false;
}
//LookupPrivilegeValue()函数查看系统权限的特权值
LUID luid;
if (FALSE == LookupPrivilegeValue(nullptr, SE_DEBUG_NAME, &luid))
{
CloseHandle(hToken);
return false;
}
//调整权限设置
TOKEN_PRIVILEGES Tok;
Tok.PrivilegeCount = 1;
Tok.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
Tok.Privileges[0].Luid = luid;
if (FALSE == AdjustTokenPrivileges(hToken, FALSE, &Tok, sizeof(Tok), nullptr, nullptr))
{
CloseHandle(hToken);
return false;
}
if (GetLastError() == ERROR_NOT_ALL_ASSIGNED)
{
CloseHandle(hToken);
return false;
}
CloseHandle(hToken);
return true;
}
void main()
{
bool isOK = UpPrivilegeValue();
cout << "isOk = " << isOK <<endl;
cout << "uacpass" <<endl;
int i = 0;
cin >> i;
cout << "i is " << i << endl;
}
这篇博客介绍了如何在C++中使用Windows API进行程序权限提升,包括OpenProcessToken、LookupPrivilegeValue和AdjustTokenPrivileges等函数的使用,以获取SE_DEBUG_NAME特权并启用它。
734

被折叠的 条评论
为什么被折叠?



