Added basic high privilege checks and message box

This commit is contained in:
AdenKoperczak 2024-12-19 14:31:12 -05:00
parent d81f187d88
commit 71f967d536
4 changed files with 75 additions and 2 deletions

View file

@ -0,0 +1,43 @@
#include "scwx/qt/util/check_privilege.hpp"
#include <QtGlobal>
#ifdef _WIN32
#include <windows.h>
#else
#include <unistd.h>
#endif
namespace scwx {
namespace qt {
namespace util {
bool is_high_privilege()
{
#if defined(_WIN32)
bool isAdmin = false;
HANDLE token = NULL;
TOKEN_ELEVATION elevation;
DWORD elevationSize = sizeof(TOKEN_ELEVATION);
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &token))
{
return false;
}
if (!GetTokenInformation(
token, TokenElevation, &elevation, elevationSize, &elevationSize))
{
CloseHandle(token);
return false;
}
isAdmin = elevation.TokenIsElevated;
CloseHandle(token);
return isAdmin;
#elif defined(Q_OS_UNIX)
// On UNIX root is always uid 0. On Linux this is enforced by the kernal.
return geteuid() == 0;
#endif
}
} // namespace util
} // namespace qt
} // namespace scwx