75 / 9 / 1
Регистрация: 07.06.2016
Сообщений: 131
|
||||||
1 | ||||||
Как получить хэндлы системного процесса?12.06.2016, 23:18. Показов 3242. Ответов 16
Метки нет (Все метки)
Добрый день. Пытаюсь получить handle какого-нибудь системного процесса. Нашел в инете пример, который выставляет своему процессу привилегию SE_DEBUG_NAME. Ошибок при установке этой привилегии не пишет. Однако хэндл системного процесса получить не дает - ошибка доступа при OpenProcess. В чем может быть дело? PID ввожу вручную. Пишу под 10-й виндой в VS.
0
|
12.06.2016, 23:18 | |
Ответы с готовыми решениями:
16
Как получить имя каждого процесса? Как получить контекст чужого процесса ? Как получить все дочерние окна процесса? Как получить HWND окна/процесса/консоли |
Ушел с форума
|
|
13.06.2016, 10:37 | 2 |
Сообщение было отмечено _lunar_ как решение
Решение
Начиная с Windows Vista и выше, некоторые процессы могут быть "защищенными", т.е.
их не удастся открыть с некоторыми правами ни под администратором, ни под системой, и даже SE_DEBUG_NAME здесь не поможет. В Windows 8.1 этот механизм был еще больше усилен - "Protected Processes Light" (информация есть в блоге A. Ionescu). И я советую на Vista и выше использовать PROCESS_QUERY_LIMITED_INFORMATION - больше шансов, что этот флаг не фильтруется защитой для некоторых процессов.
2
|
75 / 9 / 1
Регистрация: 07.06.2016
Сообщений: 131
|
|
13.06.2016, 16:51 [ТС] | 3 |
Я врубил в цикле попытки открыть все непользовательские процессы, перебирая по очереди права. Так вот у меня из около 50 процессов только 2 вернули дескриптор с правом SINHRONIZE. Все остальное - ошибка доступа. Получается, что тут не некоторые процессы защищены, а все и почти от всего. Если можно открыть процесс с правом SINHRONIZE, можно ли теоретически сделать deadlock с участием этого процесса?
0
|
Ушел с форума
|
|
13.06.2016, 18:48 | 4 |
А ты уверен, что у тебя включается привилегия SE_DEBUG_NAME?
Можно Process Explorer-ом посмотреть, например. Дело в том, что TRUE на AdjustTokenPrivileges еще ничего не означает, надо GetLastError еще звать и проверять, что он ERROR_SUCCESS (см. AdjustTokenPrivileges в MSDN - там это есть).
2
|
75 / 9 / 1
Регистрация: 07.06.2016
Сообщений: 131
|
|
13.06.2016, 19:46 [ТС] | 5 |
Точняк, не устанавливается. 1300 возвращает, а это fail. Получается нет доступа к структуре TOKEN PRIVILEGES. А его нет, потому что в маркере к ней нет доступа. Тут гостевая учетка. В каком же направлении тут копать дальше?
0
|
Ушел с форума
|
|
13.06.2016, 19:51 | 6 |
Под гостевой учеткой ты никак не откроешь системные процессы.
Если они только сами не разрешат.
0
|
75 / 9 / 1
Регистрация: 07.06.2016
Сообщений: 131
|
|
13.06.2016, 20:22 [ТС] | 7 |
Самое интересное, что и из группы "Администраторы" не удается получить SE_DEBUG
0
|
Ушел с форума
|
|
13.06.2016, 21:09 | 8 |
0
|
75 / 9 / 1
Регистрация: 07.06.2016
Сообщений: 131
|
|
13.06.2016, 21:13 [ТС] | 9 |
Никак. Предположение, что он в маркере наследует информацию от группы. А процесс запущен из группы "Администраторы"
0
|
Ушел с форума
|
|
13.06.2016, 21:14 | 10 |
Кстати,
И процесс запускать от имени администратора (правой кнопкой мыши клик на exe файле, далее в контекстном меню выбрать "Запуск от имени Администратора").
1
|
75 / 9 / 1
Регистрация: 07.06.2016
Сообщений: 131
|
||||||
14.06.2016, 16:57 [ТС] | 11 | |||||
Заработало) Спасибо. Теперь открывает кучу хэндлов на процессы с правами. И AdjustToken возвращает нуль в качестве кода ошибки. Надо еще реализовать в коде запуск от админа, ну... чтоб не мышкой)
Добавлено через 19 часов 26 минут Пытаюсь вот такой манифест подключить к проекту. Сохранил его в UTF-8, добавил в проекте в Resourse Files. В опциях линкера отключил Generate Manifest и поставил там highestAvailable. Не работает, файл запускается в обычном режиме. Пробовал в код вставить 1 24 "C:\\addon.xml", тоже без реакции. Что может быть не так?
0
|
Ушел с форума
|
|
14.06.2016, 17:43 | 12 |
Exe в студию!
0
|
75 / 9 / 1
Регистрация: 07.06.2016
Сообщений: 131
|
|
14.06.2016, 17:54 [ТС] | 13 |
Вот.
0
|
Ушел с форума
|
|
14.06.2016, 19:10 | 14 |
В этом exe вообще нет манифеста.
0
|
75 / 9 / 1
Регистрация: 07.06.2016
Сообщений: 131
|
|
16.06.2016, 13:25 [ТС] | 15 |
А в этом?
0
|
75 / 9 / 1
Регистрация: 07.06.2016
Сообщений: 131
|
|
17.06.2016, 13:46 [ТС] | 16 |
Убежденный, в ресурсах вроде появился файл rights.xml, и в окошке появился rights.rc в двоичном виде. Может его еще где-то указать надо?
0
|
75 / 9 / 1
Регистрация: 07.06.2016
Сообщений: 131
|
|
22.06.2016, 15:05 [ТС] | 17 |
Разобрался! Нужно было включить Generate Manifest:yes в опциях линкера. Теперь при запуске выводится окошко UAC.
0
|
22.06.2016, 15:05 | |
22.06.2016, 15:05 | |
Помогаю со студенческими работами здесь
17
Различные хэндлы Хэндлы hProcess и hThread Получить id процесса родителя, если исходный id процесса дочерний Как получить имя процесса? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |