對於一些運行的程序,我們希望它們能儘可能的像操作系統能做的事情一樣多,但是操作系統對於每個進程都有權限劃分,那麼此時我們就需要對期望中的進程進行提升權限,查看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; }