Delphi-如何检测防病毒软件的存在?

Delphi-如何检测防病毒软件的存在?,delphi,antivirus,Delphi,Antivirus,在安装“我的软件”期间运行防病毒软件时,某些组件安装不正确。我总是告诉用户先把它关掉。但是,他们忘了,然后我绞尽脑汁想弄清楚哪里出了问题。是否有任何人都知道的可以检测防病毒软件是否正在运行的Delphi函数,以便我可以在安装开始前提醒用户?自XPsp2以来,安全中心会注册是否存在已知的防病毒软件 Afaik此函数通过WMI api运行,可以通过Winapi访问WMI api。(绝地武士有头球) 我在这里找到了一些VBScript: 另一个技巧:尝试以任何可能的方式与用户沟通,尽可能地关闭启发式扫

在安装“我的软件”期间运行防病毒软件时,某些组件安装不正确。我总是告诉用户先把它关掉。但是,他们忘了,然后我绞尽脑汁想弄清楚哪里出了问题。是否有任何人都知道的可以检测防病毒软件是否正在运行的Delphi函数,以便我可以在安装开始前提醒用户?

自XPsp2以来,安全中心会注册是否存在已知的防病毒软件

Afaik此函数通过WMI api运行,可以通过Winapi访问WMI api。(绝地武士有头球)

我在这里找到了一些VBScript:


另一个技巧:尝试以任何可能的方式与用户沟通,尽可能地关闭启发式扫描。这些通常是导致误报的原因,并且它可能比一起杀毒更容易传达信息。

我们通过检查正在运行的进程来获得成功,因为我们之前确定任何进程都是AV程序。(您可以使用一些简单的代码枚举进程列表,您可以通过搜索运行Delphi的进程列表找到这些代码)

如果我们找到一个,我们会告诉用户并拒绝继续

为了建立我们知道是AV的流程列表,我们安装了AV程序的试用版,然后查看流程列表(在任务管理器中,或者使用我们的枚举流程代码)。不难发现它们。。。您可以关闭AV程序,看看您识别的进程是否消失。(Process Explorer很有帮助:)

例如,我们目前寻找的一些流程包括MCShield(McCaffe)、NPROTECT(Norton)、PCCNTMON(Trend Micro)等

显然,这并不能覆盖所有的AV节目,但如果你与主要供应商(诺顿、麦卡菲、趋势科技、ZA等)合作完成上述工作,你将在该领域拥有很大比例的AV节目

它的一个优点是易于实现,不需要任何真正低级的Windows API调用,只需枚举当前正在运行的进程

某些组件安装不正确


解释您正在安装哪些组件,如何安装这些组件,以及它们的安装如何失败,这样就更容易推荐解决方案。另外,您使用的是安装程序产品还是您自己的安装代码?如果是您自己的安装程序,或者如果您可以在安装后自动运行自己的代码,您可以进行自己的编程检查,以确认您的安装是100%正常的,如果没有,则报告失败的原因,并提醒用户关闭防病毒功能,然后重试安装。

我刚刚在博客上写了一篇文章,它告诉您如何检测Windows桌面版(XP、Vista和7)中是否存在防病毒软件

我知道这是一个“老”问题,但是。。。 我找到了

有趣的问题-您正在编写什么样的软件?如果这是一个反复出现的问题,我想问题可能是您的安装程序。请注意,由于Delphi在创建不需要臃肿运行时的独立exe方面的惊人之处,它编写了大量的病毒和恶意软件。因此,反病毒软件在其他delphi程序中也发现了病毒的某些部分,这是非常常见的。简单地关闭杀毒软件是没有帮助的——它只会在重新打开后立即进行干扰。@GrandmasterB:…而不是依赖臃肿的运行时,delphi产生的是一个膨胀的单个可执行文件,当然这比一个大的运行时和一个小的单个可执行文件要可怕得多。@snemarch:没有你想象的那么膨胀。Delphi的smartlinker能够删除可执行文件不需要的运行库部分,从而使它们的大小保持较小。Snemarry:与流行的观点相反,单独的运行时不会节省那么多,通常是因为主二进制文件中也添加了小存根、版本控制和解析代码。您通常需要一手以上的二进制文件才能收支平衡(因为您还需要补偿运行时中未使用的代码),除了操作系统的二进制文件和一些非常大的套件,通常系统上没有那么多二进制文件,因为运行库也有版本。非常脆弱-你最好总是显示一个启动屏幕(看起来不像EULA或其他什么),告诉用户在安装过程中运行防病毒软件可能会有问题。请务必阅读评论,因为从Vista SP1开始,这段代码就不起作用了——它们删除了您需要的名称空间。注释中也有其他选项。他们中没有一个是漂亮的,但整个情况并非如此。(正如我已经说过的,安装和“开启”也是不同的事情)我必须公开承认我否决了它。这是一个可怕的想法,让用户减少他们的防病毒提供的保护量。记住:100个误报仍然比一个误报好,通常情况下,启发式是好的。启发式主要是给消费者一种感觉,即防病毒有效,他们花钱正确。安全价值值得怀疑,用户将基于签名和启发式相结合的风险是真实的。许多企业版没有或只有最安全的启发式算法,尽管这可以从理论上回答这个问题,在这里包括答案的基本部分,并提供链接供参考。