OpenProcessToken,LookupPrivilegeValue,AdjustTokenPrivileges提升进程权限

对于一些运行的程序,我们希望它们能尽可能的像操作系统能做的事情一样多,但是操作系统对于每个进程都有权限划分,那么此时我们就需要对期望中的进程进行提升权限,查看MSDN和一些其他资料之后,写了个可用于提升进程权限的函数,可被用在程序中直接调用。代码如下:

//传入Privileges参数,用于取得想要获取的权限
//查看MSDN的LookupPrivilegeValue函数宏定义权限表可自行修改;
BOOL GetPrivilege(TCHAR* Privileges)   
{   
    HANDLE hToken;
    TOKEN_PRIVILEGES tkp;
    LUID namevalue;
    if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
    {
        return FALSE;
    }
    if(!LookupPrivilegeValue(NULL, Privileges, &namevalue))
    {
        CloseHandle(hToken);
        return FALSE;
    }
    tkp.PrivilegeCount = 1;
    tkp.Privileges[0].Luid = namevalue;
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    if(!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL))
    {
        CloseHandle(hToken);
        return FALSE;
    }
    CloseHandle(hToken);
    if(GetLastError() == ERROR_NOT_ALL_ASSIGNED)
    {
        return FALSE;
    }
    return TRUE;
}


本文出自 “开心就好” 博客,请务必保留此出处http://11611854.blog.51cto.com/5414664/1662560

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。