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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章