Хочу чуть уменьшить траблы с getad — нужно найти все процессы Local System и некоторые из них грохнуть. Теория понятна, но может у кого есть готовый пример?
Здравствуйте, Александр, Вы писали:
А>Хочу чуть уменьшить траблы с 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). Вобщем тут уже сам решай. Эта тема много раз обсуждалась — поищи.
Здравствуйте, Алекс, Вы писали:
А>Грохать тоже нужно с умом, т.е. типа снача шлем WM_CLOSE (если есть окно), потом ждем, и только потом TerminateProcess. Если не будет отвечать на WM_CLOSE, можно всем потокам попытаться послать wm_quit (PostThreadMessage). Вобщем тут уже сам решай. Эта тема много раз обсуждалась — поищи.
Вот классика от AF:
http://www.rsdn.ru/qna/?baseserv/killproc.xml
http://www.rsdn.ru/qna/?baseserv/killapp.xml
Здравствуйте, Александр, Вы писали:
А>И еще вопрос (не по теме, но я ленивый) — как получить имя залогинившегося пользователя? (текущего — у меня нет Terminal services)
GetUserNameA/GetUserNameW/GetUserNameExA/GetUserNameExW

RSDN@Home 1.0 beta 2 РУЛИТ!!!\nСоседей достает, в данный момент: Ария — Пробил час \nВек живи — век учись!
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))