С++ Проверка, запущена ли программа на с++ от имени администратора

Для python есть такое решение: Проверка, запущен ли python-скрипт от имени администратора Но как сделать эту проверку на с++??


Ответы (1 шт):

Автор решения: Harry

Под Windows? например, так:

#include <windows.h>
#include <iostream>

#pragma comment(lib, "Advapi32")

bool IsRunAsAdministrator() {
    BOOL isAdmin = FALSE;
    HANDLE hToken = nullptr;

    if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken)) {
        TOKEN_ELEVATION elevation;
        DWORD size;
        if (GetTokenInformation(hToken, TokenElevation, &elevation, sizeof(elevation), &size)) {
            isAdmin = elevation.TokenIsElevated;
        }
        CloseHandle(hToken);
    }
    return isAdmin;
}

int main() {
    if (IsRunAsAdministrator()) {
        std::cout << "Запущено от имени администратора\n";
    } else {
        std::cout << "Запущено без администраторских прав\n";
    }
    return 0;
}
→ Ссылка