Delphi - Как я могу определить наличие антивирусного программного обеспечения?

Когда антивирусное программное обеспечение работает во время установки моего программного обеспечения, некоторые компоненты устанавливаются неправильно. Я всегда говорю пользователям сначала отключить его. Но они забывают, а потом я ломаю голову, пытаясь понять, что пошло не так. Есть ли какая-либо функция Delphi, о которой кто-нибудь знает, которая может определять, работает ли антивирусное программное обеспечение, чтобы я мог предупредить пользователя перед началом установки?

5 ответов

Начиная с XPsp2, существует центр безопасности, который регистрирует наличие известного антивируса.

Afaik это работает через API WMI, к которому можно получить доступ через Winapi. (и джедай имеет заголовки для этого).

Я нашел немного VBScript здесь: http://blogs.msdn.com/b/alejacma/archive/2008/05/12/how-to-get-antivirus-information-with-wmi-vbscript.aspx

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

Я только что написал в своем блоге статью, в которой рассказывается, как обнаружить наличие антивирусного программного обеспечения в выпусках Windows Desktop (XP, Vista и 7).

Getting the installed Antivirus, AntiSpyware and Firewall software using Delphi and the WMI

Я вижу, что это "старый" вопрос, но... я нашел его Восстановить антивирусную информацию с помощью WMI

некоторые компоненты не устанавливаются правильно

Объясните, какие компоненты вы устанавливаете, как вы устанавливаете эти компоненты и как происходит их сбой, и вам будет легче порекомендовать решение. Кроме того, вы используете установочный продукт или свой собственный установочный код? Если это ваш собственный установщик или вы можете автоматически запускать свой собственный код после установщика, вы можете выполнить свою собственную программную проверку, чтобы убедиться, что установка прошла на 100%, а если нет, то сообщить о том, что не удалось, и напомнить пользователю отключить антивирус. наберите и повторите попытку установки.

Мы добились успеха, проверив запущенные процессы для любого процесса, который мы определили ранее, как AV-программу. (Вы можете перечислить список процессов, используя некоторый простой код, который можно найти, прибегая к поиску чего-либо в списке запущенных процессов Delphi)

Если мы найдем один, мы сообщим пользователю и отказываемся продолжать...

Чтобы создать наш список процессов, которые мы знаем как AV, мы устанавливаем пробные версии программ AV, а затем просматриваем список процессов (либо в диспетчере задач, либо с помощью нашего кода перечисления процессов). Их нетрудно обнаружить.... и вы можете выключить AV-программы и посмотреть, исчезнут ли идентифицируемые вами процессы. (Process Explorer полезен: http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx)

Например, некоторые процессы, которые мы ищем в настоящее время, включают MCShield (McCaffe), NPROTECT (Norton), PCCNTMON (Trend Micro) и т. Д.

Очевидно, что это не охватит ВСЕ AV-программы, но если вы сделаете вышеупомянутое с основными поставщиками (Norton, McCaffe, Trend Micro, ZA и т. Д.), У вас будет большой процент AV-программ в данной области.

Одна вещь, которая хороша в этом, - это то, что она проста в реализации и не требует никаких действительно низкоуровневых вызовов API Windows, кроме как для перечисления текущих запущенных процессов...

Другие вопросы по тегам