Цитата:
Сообщение от Alegun
Просмотрел дружественную топку, коллеги там вам полность раскрыли тему, набросали инфы - вагон, бери и собирай, в чём загвоздка-то?
З.Ы. Как подсказка, примерный алгоритм-выжимка из тамошних постов:
1) Вызываем OpenMutex - это чтоб убедиться, что он есть плюс определить тип объекта на шаге 3
2) Используем NtQuerySystemInformation с классом SystemHandleInformation=2 для получения списка всех хендлов живущих в системе
3) Ищем в списке хендл открытого мьютекса и определяем его тип посредством ObjectTypeNumber
4) Ищем в списке хендлы мьютексов требуемого процесса по его PID и ObjectTypeNumber
5) Если нашли более одного, то проверяем соответствие заданному имени: OpenProcess + NtQueryObject с классом ObjectNameInformation=1
6) Если нашли соответствие, то убиваем найденный/е хендл/ы вызовом DuplicateHandle c параметром DUPLICATE_CLOSE_SOURCE
вроде всё
|
Звучит очень здорово. Но я даже не смог получить список всех хендлов в системе. И топик висит уже сутки об этом, и так никто и не помог даже с этим, не говоря уже о завершении чужого хендла.