Re: перечисление процессов LocalSystem
От: Алекс Россия http://wise-orm.com
Дата: 08.12.02 13:40
Оценка:
Здравствуйте, Александр, Вы писали:

А>Хочу чуть уменьшить траблы с getad — нужно найти все процессы Local System и некоторые из них грохнуть. Теория понятна, но может у кого есть готовый пример?


Готовый пример наверняка у кого-нибудь найдется. Если не найдется — вот примерный план действий.

1. Используя PSAPI перечисляем все процессы. Получаем ProcessId
2. С помощью OpenProcess получаем ProcessHandle. Открыть его нужно с правом PROCESS_ALL_ACCESS, для этого необходимо включить привилегию se_debug, т.к. системные процессы, без этой привилегии так просто с правом PROCESS_ALL_ACCESS и не откроются.
3. Получаем токен процесса (TokenHandle) с помощью OpenProcessToken. Скажем с правом TOKEN_QUERY.
4. Плучаем SID юзера с помощью GetTokenInformation(TokenUser). Если это будет что-то типа NTAUTHORITY\SYSTEM — грохаем процесс.

Грохать тоже нужно с умом, т.е. типа снача шлем WM_CLOSE (если есть окно), потом ждем, и только потом TerminateProcess. Если не будет отвечать на WM_CLOSE, можно всем потокам попытаться послать wm_quit (PostThreadMessage). Вобщем тут уже сам решай. Эта тема много раз обсуждалась — поищи.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.