读书人

c++ 提拔程序的特权(AdjustTokenPrivi

发布时间: 2013-10-27 15:21:49 作者: rapoo

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;           }    }

读书人网 >C++

热点推荐