判断进程是否"以管理员身份运行"
2016-08-02 20:23
344 查看
判断进程是否是“以管理员身份运行”:
/// @brief 判断进程是否以管理员身份运行 /// @param[in] dwProcessId : 进程ID /// @param[in] bCurrentProcess : 是否是当前进程 /// @remark bCurrentProcess为true时,dwProcessId无效 /// @return 是管理员身份则返回true bool IsRunAsAdministrator(DWORD dwProcessId, bool bCurrentProcess) { bool bIsElevated = false; HANDLE hToken = NULL; UINT16 uWinVer = LOWORD(GetVersion()); uWinVer = MAKEWORD(HIBYTE(uWinVer),LOBYTE(uWinVer)); if (uWinVer < 0x0600)//不是VISTA、Windows7 return (false); do { HANDLE hProcess = NULL; if (bCurrentProcess) { hProcess = GetCurrentProcess(); } else { hProcess = ::OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwProcessId); } if (!hProcess) { bIsElevated = false; break; } HANDLE hToken = NULL; if (!::OpenProcessToken(hProcess, TOKEN_QUERY, &hToken)) { bIsElevated = false; ::CloseHandle(hProcess); break; } TOKEN_ELEVATION elevation; DWORD dwRetLen = 0; if (!::GetTokenInformation(hToken, TokenElevation, &elevation, sizeof(elevation), &dwRetLen)) { bIsElevated = false; ::CloseHandle(hToken); ::CloseHandle(hProcess); break; } if (dwRetLen == sizeof(elevation)) { bIsElevated = elevation.TokenIsElevated; } ::CloseHandle(hToken); ::CloseHandle(hProcess); } while (false); return bIsElevated; }
相关文章推荐
- 判断当前进程是否"以管理员身份运行"的
- 判断当前进程是否"以管理员身份运行"的
- 判断当前进程是否"以管理员身份运行"的
- 判断当前进程是否"以管理员身份运行"的
- 获取提升类型和判断进程是否以管理员身份运行
- 获取提升类型和判断进程是否以管理员身份运行
- VC 判断进程是否是以管理员权限运行,并且判断是否是用户进程而非服务进程
- C# WinForm判断Win7下程序是否以管理员身份运行
- C#判断程序是否以管理员身份运行,否则以管理员身份重新打开 --转载
- C# WinForm判断程序是否以管理员身份运行,UAC权限的提权与降权
- 判断进程是否以管理员权限运行
- 判断当前进程是否以管理员程序运行的方法
- 判断当前进程是否以管理员权限运行
- C# WinForm判断Win7下程序是否以管理员身份运行
- 在Windows7上用C#判断程序是否以管理员身份运行
- 判断程序是否是以 管理员 身份运行 visual c++
- C# WinForm判断程序是否以管理员身份运行
- C# WinForm判断Win7下是否是管理员身份运行
- C#判断程序是否以管理员身份运行,否则以管理员身份重新打开
- C# WinForm判断Win7下是否是管理员身份运行