Я помню, как наткнулся на статью о CodeProject, которая, как мне кажется, довольно давно была посвящена антивирусам или вредоносным программам, о которых писал какой-то парень, который подключился к Windows API, чтобы иметь возможность перехватывать информацию при запуске нового процесса и предлагать пользователю ранее разрешить запуск процесса.
Я больше не могу найти статью, и на самом деле хотел бы иметь возможность реализовать нечто подобное. В настоящее время у нас есть собственный браузер, построенный на Gecko, в который мы интегрировали ограничения доступа к сайтам на основе уровней безопасности наших внутренних сотрудников и т. Д. Мы запрещаем запуск любого другого браузера с таймером и вызовом Process.GetProcessesByName () из список браузеров, которые мы не разрешаем.
Мы хотим добиться того, чтобы вместо того, чтобы просто блокировать эти браузеры, когда между запуском другого браузера и его отключением нашим сервисом существует небольшая задержка, мы хотели бы иметь возможность отображать диалог вместо процесс запуска вообще, объясняя, что программа отсутствует в списке разрешенных. Таким образом, мы можем сгенерировать список «разрешенных» процессов и просто заблокировать все остальное (у нас еще не было проблем с установкой внешних приложений, но вы никогда не будете слишком осторожны).
К сожалению, мы мало занимаемся программированием Windows API на C #, поэтому я не уверен, с чего начать поиск вызовов, которые нам нужно перехватить.
Даже просто отправная точка того, что нужно читать, будет полезна.