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

C++

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

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

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

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

Использование C++ кода внутри программы на C: какие есть варианты? - C++
Есть программа на C++, и в ней кое-какие нужные функции, которые хотелось бы использовать в программе на C. Переписывать заново функции с...

Какие еще есть способы создания визуальных приложений кроме WinApi? - C++
Здравствуйте, я так понимаю под Windows оконные приложения создаются на WinAPI. Хотел спросить есть ли другие инструменты для создания окон...

Какие сом порты есть у компютера? - C++ Builder
Как можно узнать используя с++билдер, какие номера сом портов используються в данном конкретном компюторе? спаибо!

Описание структуры ПО. Подскажите, какие есть подходы? - C++ Builder
Какие есть подходы к описанию структуры ПО (для того, что бы хорошо ориентироваться в своем ПО и дать наглядную возможность разобраться в...

какие есть методы перевода чисел в строку? - C++ Builder
вещественное число двойной точности преобразовать число в строку

Какие есть компоненты для работы с PowerPoint в C++ Builder xe4? - C++ Builder
Знаю, что на C++ Builder 6 есть компонент PowerPointApplication.... Но мне нужно для xe4! Где взять подобный? Добавлено через 24...

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

С чужими процессами сложнее, т.к. чтобы их открыть, нужны права
администратора, да и не все процессы вообще можно открыть...
0
BlackOwl
5 / 5 / 1
Регистрация: 23.12.2014
Сообщений: 90
07.03.2015, 17:20  [ТС] #3
Убежденный, спасибо, меня интересуют именно чужие процессы
0
Убежденный
Системный программист
Эксперт С++
15552 / 7060 / 1114
Регистрация: 02.05.2013
Сообщений: 11,468
Завершенные тесты: 1
07.03.2015, 17:24 #4
OpenProcess, затем OpenProcessToken, и далее CheckTokenMembership,
как в рецепте выше. Перед вызовом OpenProcess полезно попробовать
включить привилегию SE_DEBUG_NAME, это повышает шансы на успешное
открытие процесса, который выполняется в другом контексте безопасности.
0
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
0
Убежденный
Системный программист
Эксперт С++
15552 / 7060 / 1114
Регистрация: 02.05.2013
Сообщений: 11,468
Завершенные тесты: 1
09.03.2015, 09:49 #6
Все верно. Только я вместо AllocateAndInitializeSid предпочитаю
более простую CreateWellKnownSid.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2015, 09:49
Привет! Вот еще темы с ответами:

Чтение памяти другого процесса по таймеру: нужно ли закрывать хэндл процесса? - C++ Builder
В моём варианте работает так: По таймеру (0,1 сек) определяю ID процесса по ехе-шнику, получаю хэндл процесса(открываю процесс) ...

Какие есть вирусы? - Visual C++
Здравствуйте. Пожалуйста киньте мне список всех вирусов, или какие есть вирусы. Заранее буду благодарен. С уважением denidav.

Как узнать, на какие папки у пользователя есть права rw? - Bash
Доброго времени суток. Не подскажете каким образом можно узнать где в файловой системе у пользователя есть права на создание папок и...

Определить, какие из этих имен встречаются во всех классах, какие есть хотя бы в двух классах, и какие - только в одном классе - C++
Для каждого из четырех классов указаны имена девочек, обучающихся в них. Определить, какие из этих имен встречаются во всех классах, какие...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.03.2015, 09:49
Ответ Создать тему
Опции темы

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