Windows VC 提升当前进程权限
- Windows VC 提升当前进程权限到管理员权限
Windows VC 提升当前进程权限到管理员权限
有时候Windows下我们需要提升当前进程的权限到管理员权限,相关VC 代码如下:
代码语言:javascript复制#include <iostream>
#include <Windows.h>
void SafeCloseHandle(HANDLE handle)
{
if (handle != nullptr) {
(void)::CloseHandle(handle);
handle = nullptr;
}
}
bool EnableDebugPrivilege()
{
HANDLE handleToken = NULL;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &handleToken)) {
return false;
}
LUID debugNameValue;
if (!LookupPrivilegeValue(nullptr, SE_DEBUG_NAME, &debugNameValue)) {
SafeCloseHandle(handleToken);
return false;
}
TOKEN_PRIVILEGES tokenPri;
tokenPri.PrivilegeCount = 1;
tokenPri.Privileges[0].Luid = debugNameValue;
tokenPri.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (!AdjustTokenPrivileges(handleToken, FALSE, &tokenPri, sizeof(tokenPri), nullptr, nullptr)) {
SafeCloseHandle(handleToken);
return false;
}
SafeCloseHandle(handleToken);
return true;
}
int main()
{
// 提升至管理员权限
EnableDebugPrivilege();
return 0;
}