5

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

4

5 回答 5

3

从 XPsp2 开始,如果存在已知的防病毒软件,安全中心就会进行注册。

Afaik 这个函数通过 WMI api 运行,可以通过 Winapi 访问。(绝地有它的标题)。

我在这里找到了一些 VBScript:http: //blogs.msdn.com/b/alejacma/archive/2008/05/12/how-to-get-antivirus-information-with-wmi-vbscript.aspx

另一个提示:尝试以任何可能的方式与您的用户交流,以尽可能关闭启发式扫描。这些通常是误报的原因,与一起杀死防病毒软件相比,它可能更容易传达信息。

于 2010-08-27T20:59:05.473 回答
3

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

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

于 2011-02-20T03:11:29.740 回答
1

我看到这是一个“旧”问题,但是......我发现它 使用 WMI 检索防病毒信息

于 2011-11-27T23:59:16.107 回答
1

某些组件未正确安装

说明您正在安装哪些组件,如何安装这些组件,以及它们的安装如何失败,这样会更容易推荐解决方案。另外,您使用的是安装程序产品,还是您自己的安装代码?如果是您自己的安装程序,或者您可以在安装程序后自动运行您自己的代码,您可以自己进行程序检查以确认您的安装是否 100% OK,如果不是,则报告失败并提醒用户关闭杀毒软件东西并重试安装。

于 2010-08-28T05:32:26.983 回答
0

通过检查我们事先确定为 AV 程序的任何进程的运行进程,我们取得了成功。(您可以使用一些简单的代码枚举进程列表,您可以通过谷歌搜索列出正在运行的进程 Delphi 找到这些代码)

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

为了构建我们知道是 AV 的进程列表,我们安装 AV 程序的试用版,然后查看进程列表(在任务管理器中,或使用我们的枚举进程代码)。发现它们并不难...您可以关闭 AV 程序并查看您识别的进程是否消失。(进程资源管理器很有帮助:http ://technet.microsoft.com/en-us/sysinternals/bb896653.aspx )

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

显然,这不会捕获所有的 AV 程序,但是如果您与主要供应商(Norton、McCaffe、Trend Micro、ZA 等)进行上述操作,您将获得该领域中很大比例的 AV 程序。

这样做的好处是它很容易实现并且不需要任何非常低级别的 Windows API 调用,除了枚举当前正在运行的进程......

于 2010-08-27T21:18:22.157 回答