C++ Вопрос Проверка на запуск от имени администратора [РЕШЕНО]

Всем Рептилойдам - Рен ТВ
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
541
Реакции[?]
92
Поинты[?]
0
Как сделать проверку на запуск приложения от имени админа?
 
Начинающий
Статус
Оффлайн
Регистрация
12 Апр 2019
Сообщения
231
Реакции[?]
18
Поинты[?]
0
C++:
OOL IsUserAdmin(VOID)
{
BOOL b;
SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
PSID AdministratorsGroup;
b = AllocateAndInitializeSid(
    &NtAuthority,
    2,
    SECURITY_BUILTIN_DOMAIN_RID,
    DOMAIN_ALIAS_RID_ADMINS,
    0, 0, 0, 0, 0, 0,
    &AdministratorsGroup);
if(b)
{
    if (!CheckTokenMembership( NULL, AdministratorsGroup, &b))
    {
         b = FALSE;
    }
    FreeSid(AdministratorsGroup);
}

return(b);
}
ну вроде так ,если ты об этом
 
Всем Рептилойдам - Рен ТВ
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
541
Реакции[?]
92
Поинты[?]
0
Компоновщик/Уровень выполнения UAC
Мне нужна именно проверка
C++:
OOL IsUserAdmin(VOID)
{
BOOL b;
SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
PSID AdministratorsGroup;
b = AllocateAndInitializeSid(
    &NtAuthority,
    2,
    SECURITY_BUILTIN_DOMAIN_RID,
    DOMAIN_ALIAS_RID_ADMINS,
    0, 0, 0, 0, 0, 0,
    &AdministratorsGroup);
if(b)
{
    if (!CheckTokenMembership( NULL, AdministratorsGroup, &b))
    {
         b = FALSE;
    }
    FreeSid(AdministratorsGroup);
}

return(b);
}
ну вроде так ,если ты об этом
Нет, это не то.
научись использовать гугл, пожалуйста
Пожалуйста, авторизуйтесь для просмотра ссылки.
Не работает.
 
Последнее редактирование:
Участник
Статус
Оффлайн
Регистрация
28 Окт 2019
Сообщения
1,153
Реакции[?]
302
Поинты[?]
3K
Просто создавай в корне диска C какой-то файл и проверяй по статусу успешно или нет, если не от прав админа, то будет ошибка
 
Всем Рептилойдам - Рен ТВ
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
541
Реакции[?]
92
Поинты[?]
0
Просто создавай в корне диска C какой-то файл и проверяй по статусу успешно или нет, если не от прав админа, то будет ошибка
Колхоз как по мне, но за идею спасибо.
 
Забаненный
Статус
Оффлайн
Регистрация
22 Мар 2021
Сообщения
1,019
Реакции[?]
314
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
BOOL IsAppRunningAsAdminMode()
{
    BOOL fIsRunAsAdmin = FALSE;
    DWORD dwError = ERROR_SUCCESS;
    PSID pAdministratorsGroup = NULL;

    // Allocate and initialize a SID of the administrators group.

    SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
    if (!AllocateAndInitializeSid(
        &NtAuthority,
        2,
        SECURITY_BUILTIN_DOMAIN_RID,
        DOMAIN_ALIAS_RID_ADMINS,
        0, 0, 0, 0, 0, 0,
        &pAdministratorsGroup))
    {
        dwError = GetLastError();
        goto Cleanup;
    }

    // Determine whether the SID of administrators group is enabled in

    // the primary access token of the process.

    if (!CheckTokenMembership(NULL, pAdministratorsGroup, &fIsRunAsAdmin))
    {
        dwError = GetLastError();
        goto Cleanup;
    }

Cleanup:
    // Centralized cleanup for all allocated resources.

    if (pAdministratorsGroup)
    {
        FreeSid(pAdministratorsGroup);
        pAdministratorsGroup = NULL;
    }

    // Throw the error if something failed in the function.

    if (ERROR_SUCCESS != dwError)
    {
        throw dwError;
    }

    return fIsRunAsAdmin;
}
example
C++:
    bool fIsRunAsAdmin = IsAppRunningAsAdminMode();
    if (!fIsRunAsAdmin) {
        std::cout << "No Admin Rights" << std::endl;
        system("pause");
    }
 
Начинающий
Статус
Оффлайн
Регистрация
2 Июн 2020
Сообщения
3
Реакции[?]
1
Поинты[?]
0
C++:
BOOL IsAppRunningAsAdminMode()
{
    BOOL fIsRunAsAdmin = FALSE;
    DWORD dwError = ERROR_SUCCESS;
    PSID pAdministratorsGroup = NULL;

    // Allocate and initialize a SID of the administrators group.
    SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
    if (!AllocateAndInitializeSid(
        &NtAuthority,
        2,
        SECURITY_BUILTIN_DOMAIN_RID,
        DOMAIN_ALIAS_RID_ADMINS,
        0, 0, 0, 0, 0, 0,
        &pAdministratorsGroup))
    {
        dwError = GetLastError();
        goto Cleanup;
    }

  

    if (!CheckTokenMembership(NULL, pAdministratorsGroup, &fIsRunAsAdmin))
    {
        dwError = GetLastError();
        goto Cleanup;
    }

Cleanup:
  .
    if (pAdministratorsGroup)
    {
        FreeSid(pAdministratorsGroup);
        pAdministratorsGroup = NULL;
    }

    // Throw the error if something failed in the function.
    if (ERROR_SUCCESS != dwError)
    {
        throw dwError;
    }

    return fIsRunAsAdmin;
}

//если консольное то будет так
void adminaccess()
{
    if (!IsAppRunningAsAdminMode())
    {
        std::cout << "[-] " << "Программа не открыта от имени администратора!";
        Sleep(5000);
        exit(1);
    }
}
 
Начинающий
Статус
Оффлайн
Регистрация
29 Июн 2020
Сообщения
18
Реакции[?]
15
Поинты[?]
0
C++:
bool check()
{
    TOKEN_ELEVATION_TYPE token;
    DWORD size;
    bool info = GetTokenInformation(GetCurrentProcessToken(), TokenElevationType, &token, sizeof(token), &size);
    return info && token != TokenElevationTypeLimited;
}
 
Сверху Снизу