在安装我的软件期间运行防病毒软件时,某些组件无法正确安装。我总是告诉用户先把它关掉。但是,他们忘记了,然后我绞尽脑汁试图弄清楚出了什么问题。有没有人知道可以检测AntiVirus软件是否正在运行的Delphi功能,所以我可以在安装开始前提醒用户?
答案 0 :(得分:3)
从XPsp2开始,如果存在已知的防病毒软件,则会有安全中心注册。
通过WMI api实现此功能,可以通过Winapi访问。 (而且Jedi有标题)。
我在这里找到了一些VBScript:http://blogs.msdn.com/b/alejacma/archive/2008/05/12/how-to-get-antivirus-information-with-wmi-vbscript.aspx
另一个提示:尝试以任何方式与您的用户进行通信,以尽可能地关闭启发式扫描。这些通常是误报的原因,并且它可以比一起杀死防病毒更容易。
答案 1 :(得分:3)
我刚在博客上写了一篇文章,该文章告诉您如何检测Windows桌面版本(XP,Vista和7)中防病毒软件的存在。
Getting the installed Antivirus, AntiSpyware and Firewall software using Delphi and the WMI
答案 2 :(得分:1)
某些组件未正确安装
说明您正在安装的组件,安装这些组件的方式以及安装失败的方式,并且更容易推荐解决方案。此外,您使用的是安装程序产品,还是您自己的安装代码?如果它是您自己的安装程序,或者您可以在安装程序后自动运行自己的代码,则可以执行自己的编程检查以确认您的安装是100%正常,如果没有则报告失败并提醒用户关闭防病毒软件东西并重试安装。
答案 3 :(得分:1)
我看到这是一个“老”问题,但...... 我找到了 Retreive Antivirus Information using WMI
答案 4 :(得分:0)
我们已经成功通过检查我们之前确定的任何进程的运行进程是AV程序。 (您可以使用一些简单的代码枚举进程列表,您可以通过Google搜索List Running Processes Delphi找到它)
如果我们找到一个,我们会告诉用户并拒绝继续......
要构建我们知道AV的流程列表,我们安装AV程序的试用版,然后查看流程列表(在任务管理器中,或使用我们的枚举流程代码。)这不是很难发现它们......你可以关闭AV程序,看看你识别的进程是否消失。 (Process Explorer非常有用:http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx)
例如,我们目前寻找的一些流程包括MCShield(麦卡菲),NPROTECT(诺顿),PCCNTMON(趋势科技)等。
显然这不会捕获所有AV程序,但如果您与主要供应商(Norton,McCaffe,趋势科技,ZA等)进行上述操作,您将拥有该领域中大部分的AV程序覆盖。
有一点很好用,它很容易实现,并且不需要任何真正低级别的Windows API调用,除了枚举当前正在运行的进程...