Windows VC++提升当前进程权限
- Windows VC++提升当前进程权限到管理员权限
Windows VC++提升当前进程权限到管理员权限
有时候Windows下我们需要提升当前进程的权限到管理员权限,相关VC++代码如下:
#ifndef SAFE_CLOSE_HANDLE
#define SAFE_CLOSE_HANDLE(handle, defaultValue) \{if (handle != defaultValue) { \(void)::CloseHandle(handle); \handle = defaultHandle; \} \}
#endif // !SAFE_CLOSE_HANDLEbool EnableDebugPrivilege()
{HANDLE handleToken = NULL; if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &handleToken)) {return false;
}LUID debugNameValue;if (!LookupPrivilegeValue(nullptr, SE_DEBUG_NAME, &debugNameValue) {SAFE_CLOSE_HANDLE(handleToken, NULL);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) {SAFE_CLOSE_HANDLE(handleToken, NULL);return false;
}SAFE_CLOSE_HANDLE(handleToken, NULL);return true;
}