病毒扫描程序锁定和删除临时文件 - 应对它们的最佳方法?
-
03-07-2019 - |
题
我的应用程序处理来自不同来源的电子邮件,例如Outlook 和 IMAP 邮箱。在解析它们之前,我将它们写入临时目录(不能将它们保留在内存中)。在解析时,我可能会将附件写入临时目录(例如,如果它们太大而无法保留在内存中或无法进行全文提取)。
但在野外,发生了两件事,一开始看起来很奇怪,但都可以追溯到病毒扫描程序的行为:
有时我无法打开几毫秒前我自己编写的文件。它们显然已被病毒扫描程序锁定,以确保它们是干净的。我收到异常。
如果病毒扫描程序认为文件有危险,它会在某个时间点将其删除。
为了应对这种行为,我编写了一些方法,在打开失败时重试,或者检查文件是否存在,但我无法在应用程序的每个部分使用它们(第三方代码,例如过滤器) ,所以事情变得更好,但不是 100% 完美,因此我的源代码部分看起来很丑。
您如何应对病毒扫描程序?
解决方案
加密写入您的文件。我认为你不需要任何太棘手或复杂的事情。还要加密或破坏文件名,因为病毒扫描程序也可能由此触发。
其他提示
如果更改病毒扫描程序配置不是您的理想选择。您能否从文件创建到进程结束一直保持文件打开状态?如果您获得了该文件的句柄,则病毒扫描程序将无法使用该文件。
您通常应该从病毒扫描程序中排除邮件过滤文件,并使用位于传入邮件系列管道中的专用邮件反病毒程序。一定要考虑要求您的用户关闭其邮件服务器上的“删除受感染文件”选项,否则他们可能会丢失邮件数据库:-/。例如,您可以如何配置 AV 以忽略 Exchange:http://www.sophos.com/support/knowledgebase/article/12214.html但另一种看待它的方式是文件中存在病毒,因此您可能无论如何都不想传递它;-)
之前的答案说要更改权限,以便只有您的进程才能访问这些文件。那是行不通的;任何有价值的反病毒软件都将在内核中运行,并且无论如何都可以访问文件。
病毒扫描程序具有排除文件夹。只需查看文档并将临时文件夹添加到此列表中即可。