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