我的应用程序处理来自不同来源的电子邮件,例如Outlook 和 IMAP 邮箱。在解析它们之前,我将它们写入临时目录(不能将它们保留在内存中)。在解析时,我可能会将附件写入临时目录(例如,如果它们太大而无法保留在内存中或无法进行全文提取)。

但在野外,发生了两件事,一开始看起来很奇怪,但都可以追溯到病毒扫描程序的行为:

  • 有时我无法打开几毫秒前我自己编写的文件。它们显然已被病毒扫描程序锁定,以确保它们是干净的。我收到异常。

  • 如果病毒扫描程序认为文件有危险,它会在某个时间点将其删除。

为了应对这种行为,我编写了一些方法,在打开失败时重试,或者检查文件是否存在,但我无法在应用程序的每个部分使用它们(第三方代码,例如过滤器) ,所以事情变得更好,但不是 100% 完美,因此我的源代码部分看起来很丑。

您如何应对病毒扫描程序?

有帮助吗?

解决方案

加密写入您的文件。我认为你不需要任何太棘手或复杂的事情。还要加密或破坏文件名,因为病毒扫描程序也可能由此触发。

其他提示

如果更改病毒扫描程序配置不是您的理想选择。您能否从文件创建到进程结束一直保持文件打开状态?如果您获得了该文件的句柄,则病毒扫描程序将无法使用该文件。

您通常应该从病毒扫描程序中排除邮件过滤文件,并使用位于传入邮件系列管道中的专用邮件反病毒程序。一定要考虑要求您的用户关闭其邮件服务器上的“删除受感染文件”选项,否则他们可能会丢失邮件数据库:-/。例如,您可以如何配置 AV 以忽略 Exchange:http://www.sophos.com/support/knowledgebase/article/12214.html但另一种看待它的方式是文件中存在病毒,因此您可能无论如何都不想传递它;-)

之前的答案说要更改权限,以便只有您的进程才能访问这些文件。那是行不通的;任何有价值的反病毒软件都将在内核中运行,并且无论如何都可以访问文件。

病毒扫描程序具有排除文件夹。只需查看文档并将临时文件夹添加到此列表中即可。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top