BOOL IsRunningAsAdmin(DWORD pid) {
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid);
if (!hProcess) {
return FALSE;
}
HANDLE hToken;
TOKEN_ELEVATION Elevation;
DWORD cbSize = sizeof(TOKEN_ELEVATION);
// 获取当前进程的访问令牌
if (!OpenProcessToken(hProcess, TOKEN_QUERY, &hToken))
return false;
// 获取令牌的提权信息
if (!GetTokenInformation(hToken, TokenElevation, &Elevation, cbSize, &cbSize)) {
CloseHandle(hToken);
return false;
}
// 检查是否提权
CloseHandle(hToken);
return Elevation.TokenIsElevated != 0;
}