Lorsqu'un logiciel antivirus est en cours d'exécution pendant l'installation de mon logiciel, certains composants ne sont pas installés correctement. Je dis toujours aux utilisateurs de l'éteindre en premier. Mais, ils oublient et puis je me casse la cervelle en essayant de comprendre ce qui s'est mal passé. Existe-t-il une fonction Delphi permettant de détecter si le logiciel antivirus est en cours d'exécution, afin que je puisse alerter l'utilisateur avant le démarrage de l'installation?Delphi - Comment puis-je détecter la présence du logiciel antivirus?
Répondre
Depuis XPsp2, il y a le centre de sécurité qui s'enregistre s'il y a un antivirus connu. Afaik fonctionne sur l'API WMI, accessible via Winapi. (et Jedi a des en-têtes pour cela).
J'ai trouvé quelques VBScript ici: http://blogs.msdn.com/b/alejacma/archive/2008/05/12/how-to-get-antivirus-information-with-wmi-vbscript.aspx
Une autre astuce: essayez de communiquer à vos utilisateurs toute façon possible de désactiver les analyses heuristiques autant que possible. Ce sont généralement la cause de faux positifs, et il peut être un message plus facile à apporter que de tuer l'antivirus tous ensemble.
Assurez-vous de lire les commentaires, car le code exact ne fonctionnera pas à partir de Vista SP1 - ils ont supprimé l'espace de noms dont vous avez besoin. –
Il y a des alternatives dans les commentaires aussi. Pas d'eux est jolie, mais toute cette situation ne l'est pas. (comme je l'ai déjà dit, installé et "on" sont aussi des choses différentes) –
Je dois avouer ouvertement que je l'ai downvoted. C'est une idée terrible et terrible d'amener les utilisateurs à réduire la quantité de protection offerte par leur antivirus. Rappelez-vous: 100 faux positifs sont toujours meilleurs qu'un faux négatif, et généralement, les heuristiques sont * bonnes *. –
Nous avons eu du succès en vérifiant les processus en cours pour tout processus que nous avons déterminé avant-main est un programme AV. (Vous pouvez énumérer une liste des processus en utilisant un code simple que vous pouvez trouver par googling processus Liste de quelque chose de course Delphi)
Si nous trouvons un, nous racontons l'utilisateur et refuser de continuer ...
Pour construire notre liste de processus que nous connaissons est AV, nous installons des versions d'essai des programmes AV, puis regardons la liste des processus (soit dans le gestionnaire de tâches, soit en utilisant notre code enumérer les processus.) Il n'est pas difficile de les repérer. et vous pouvez fermer les programmes AV et voir si les processus que vous identifiez disparaissent. (Process Explorer est utile: http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx)
Par exemple, certains des processus que nous examinons actuellement comprennent McShield (McCaffe), NPROTECT (Norton), PccNTMon (Trend Micro), etc.
Il est évident que ce won » t attraper tous les programmes AV, mais si vous faites ce qui précède avec les principaux fournisseurs (Norton, McCaffe, Trend Micro, ZA, etc.), vous aurez un grand pourcentage de programmes AV dans le domaine couvert.
Une chose qui est à ce sujet est qu'il est facile à mettre en œuvre et ne nécessite pas de niveau très bas des appels API Windows, à l'exception d'énumérer les processus en cours d'exécution ...
Assez fragile - vous feriez mieux de toujours * montrer * un écran de démarrage (qui * ne ressemble pas à un CLUF ou autre) indiquant aux utilisateurs que l'exécution d'antivirus le logiciel pourrait être problématique pendant l'installation. – snemarch
certains composants ne s'installe correctement
Expliquez quels composants vous installez, comment vous installez ces composants et comment leur installation échoue, et il sera plus facile de recommander une solution. En outre, utilisez-vous un produit d'installation ou votre propre code d'installation? Si c'est votre propre installateur, ou si vous pouvez exécuter automatiquement votre propre code après le programme d'installation, vous pouvez effectuer votre propre vérification programmatique pour confirmer que votre installation est 100% OK, sinon rapportez ce qui a échoué et rappelez à l'utilisateur de désactiver l'antivirus et réessayez l'installation.
Je viens d'écrire sur mon blog un article qui vous explique comment détecter la présence du logiciel antivirus dans les éditions Windows Desktop (XP, Vista et 7).
Getting the installed Antivirus, AntiSpyware and Firewall software using Delphi and the WMI
Je vois que cette question est « vieux », mais ... je l'ai trouvé Retreive Antivirus Information using WMI
Bien que cela puisse théoriquement répondre à la question, [il serait préférable] (http://meta.stackexchange.com/q/8259) d'inclure les parties essentielles de la réponse ici, et de fournir le lien pour référence. – Jack
problème intéressant - ce type de logiciel que vous écrivez? –
Si c'est un problème récurrent, je dirais que le problème est probablement votre installateur. Notez qu'en raison de l'awesomeness de Delphi à créer des exe autonomes qui n'ont pas besoin de runtime gonflé, beaucoup de virii et de malware sont écrits dedans. Donc, c'est assez fréquent que les logiciels anti-virus empreintes d'une partie d'un virus que l'on trouve également dans d'autres programmes Delphi. Le simple fait de désactiver votre antivirus ne va pas vous aider - il interférerait dès qu'il serait réactivé. – GrandmasterB
@GrandmasterB: ... au lieu de compter sur des temps d'exécution gonflés, Delphi produit des exécutables individuels hyper-gonflés - ce qui est bien sûr beaucoup plus impressionnant qu'un seul grand temps d'exécution et de petits exécutables individuels. – snemarch