Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
BlackOwl
5 / 5 / 1
Регистрация: 23.12.2014
Сообщений: 90
#1

Какие права есть у процесса - C++

07.03.2015, 17:12. Просмотров 317. Ответов 5
Метки нет (Все метки)

Как узнать какие права есть у процесса, конкретно интересует есть ли у него права администратора
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2015, 17:12     Какие права есть у процесса
Посмотрите здесь:

Какие сом порты есть у компютера? C++ Builder
Какие есть функции для рисования Visual C++
C++ Какие книги есть по Си++?
C++ Есть ли какие то статьи про графику в DOS?
Какие есть вирусы? Visual C++
Какие есть компиляторы c++ без изменения синтаксиса C++
Какие есть GUI библиотеки для c++ C++
Какие механизмы для защиты кучи есть? C++
C++ Какие есть ошибки в коде?
C++ Какие есть средства для работы с MySQL?
Какие есть библиотеки для парсинга JSON? C++
C++ Какие есть ошибки в коде

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
Эксперт С++
15103 / 6798 / 1073
Регистрация: 02.05.2013
Сообщений: 11,112
Завершенные тесты: 1
07.03.2015, 17:18     Какие права есть у процесса #2
Если для своего процесса, тогда так: создаете SID группы "Администраторы"
(S-1-5-32-544, проще всего через CreateWellKnownSid), а затем с помощью
CheckTokenMembership проверяете, входит ли этот SID в access token потока.
На системах до Vista будет TRUE, если пользователь входит в группу админов.
На Vista и выше будет TRUE, если процесс запущен с повышением прав до
уровня администратора.

С чужими процессами сложнее, т.к. чтобы их открыть, нужны права
администратора, да и не все процессы вообще можно открыть...
BlackOwl
5 / 5 / 1
Регистрация: 23.12.2014
Сообщений: 90
07.03.2015, 17:20  [ТС]     Какие права есть у процесса #3
Убежденный, спасибо, меня интересуют именно чужие процессы
Убежденный
Системный программист
Эксперт С++
15103 / 6798 / 1073
Регистрация: 02.05.2013
Сообщений: 11,112
Завершенные тесты: 1
07.03.2015, 17:24     Какие права есть у процесса #4
OpenProcess, затем OpenProcessToken, и далее CheckTokenMembership,
как в рецепте выше. Перед вызовом OpenProcess полезно попробовать
включить привилегию SE_DEBUG_NAME, это повышает шансы на успешное
открытие процесса, который выполняется в другом контексте безопасности.
BlackOwl
5 / 5 / 1
Регистрация: 23.12.2014
Сообщений: 90
09.03.2015, 09:24  [ТС]     Какие права есть у процесса #5
я нашел решение своей проблемы, сейчас поделюсь, вдруг кому-то пригодится
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
BOOL IsUserAdmin(HANDLE token)
{
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(token, AdministratorsGroup, &b)) 
    {
         b = FALSE;
    } 
    FreeSid(AdministratorsGroup); 
}
 
return(b);
}
Возращает 0 если есть права, и 1 если нету

Сайт с которого взял функцию: https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx
Убежденный
Системный программист
Эксперт С++
15103 / 6798 / 1073
Регистрация: 02.05.2013
Сообщений: 11,112
Завершенные тесты: 1
09.03.2015, 09:49     Какие права есть у процесса #6
Все верно. Только я вместо AllocateAndInitializeSid предпочитаю
более простую CreateWellKnownSid.
Yandex
Объявления
09.03.2015, 09:49     Какие права есть у процесса
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru