Вы должны войти, чтобы создавать сообщения и темы.

Насколько правильное решение и возможные другие пути решения

Здравствуйте, товарищи!

У меня есть программа, у которой есть необходимость в асинхроне постоянно искать новые данные в базе и исходя из новых данных действовать в определенном ключе, например, если в базе есть запись с приложением, то процесс этого приложения необходимо убить моментально и вывести сообщение на экран. 

так вот, есть бесконечный цикл вайл, который запускается в отдельном потоке каждые 15 мс, проходит по всей базе, и из списка загруженного из базы ищет соответстия по текущим процессам и убивает процесс, если находит совпадение. После вызывается сообщение. Все работает и не нагружает систему. 

Насколько такому решению есть место быть? и какие могут быть аналоги данного решения. Как ещё можно блокировать вызов приложения? 

Это все необходимо в целях изучения антивирусов и защиты ПО, хотелось бы рассмотреть данную проблему поближе. Все функционирует под C#. Спасибо заранее.

Привет 👋. На точность ответа не претендую, так как подобные задачи не решал, и пока не работаю с базами данных. Консультировался с ChatGPT. С логической точки зрения лучше вообще не дать запрещенным процессам запускаться. В идеале, что-то типа EasyHook в нем можно перехватывать системные функции(создания процесса) на уровне драйвера, у него он свой вроде. С EasyHook никогда не работал. Опрашивать постоянно базу данных так же вредит производительности. Лучше закэшировать список и обновлять его по событиям, если есть доступ к настройкам базе данных, нужно использовать нативные функции для создания уведомлений об изменениях таблиц. Также есть вопросы о том как идентифицировать процесс. Простого имени недостаточно в том контексте, что злоумышленник может в определённый степени модифицировать искомый процесс. Ну а как говорится "на коленке", и это вариант вроде рабочий.