c++ 提升程序的特权(AdjustTokenPrivileges)
提升程序的特权,要用到三个函数:OpenProcessToken,AdjustTokenPrivileges,LookupPrivilegeValue
--------------------------------------------------------------
首先需要获取进程的令牌句柄
OpenProcessToken的原型.
#include <windows.h> #include <iostream> using namespace std; void main() { BOOL retn; HANDLE hToken; retn = OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken); if(retn != TRUE) { cout<<"获取令牌句柄失败!"<<endl; return; } TOKEN_PRIVILEGES tp; //新特权结构体 LUID Luid; retn = LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&Luid); if(retn != TRUE) { cout<<"获取Luid失败"<<endl; return; } //给TP和TP里的LUID结构体赋值 tp.PrivilegeCount = 1; tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; tp.Privileges[0].Luid = Luid; AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(TOKEN_PRIVILEGES),NULL,NULL); if(GetLastError() != ERROR_SUCCESS) { cout<<"修改特权不完全或失败!"<<endl; } else { cout<<"修改成功!"<<endl; } }