对于一些运行的程序,我们希望它们能尽可能的像操作系统能做的事情一样多,但是操作系统对于每个进程都有权限划分,那么此时我们就需要对期望中的进程进行提升权限,查看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;
}