gpt4 book ai didi

windows - 是否可以合理地绕过扫描工作目录的防病毒软件?

转载 作者:可可西里 更新时间:2023-11-01 14:41:42 25 4
gpt4 key购买 nike

我的 Win32 应用程序在运行时在指定的临时文件夹中执行大量磁盘操作,并且认真地重新设计它是不可能的。

有些客户端有扫描同一个临时目录的防病毒软件(它只是扫描所有内容)。我们试图说服他们禁用它 - 它不起作用,所以这也是不可能的。

每隔一段时间(大约每千次文件操作一次),我的应用程序会尝试对当时由防病毒软件打开并因此被操作系统锁定的文件执行操作。发生共享冲突并导致我的应用程序出错。这种情况平均每三分钟发生一次。

在大多数典型情况下,临时文件夹最多可包含 10 万个文件,因此我不喜欢让它们一直打开的想法,因为这可能会导致在某些边缘情况下资源耗尽。

我的应用程序是否有一些合理的策略来响应所需文件被锁定的情况?也许是这样的?

for( int i = 0; i < ReasonableNumber; i++ ) {
try {
performOperation(); // do useful stuff here
break;
} catch( ... ) {
if( i == ReasonableNumber - 1 ) {
throw; //not to hide errors if unlock never happens
}
}
Sleep( ReasonableInterval );
}

这是一个可行的策略吗?如果是这样,我的应用程序应该重试多少次以及多久重试一次?如果有什么更好的想法?

最佳答案

在扫描文件时锁定文件的病毒扫描程序非常糟糕。拥有如此糟糕的病毒扫描程序的客户需要更换他们的大脑......;-)

好了,废话不多说了。如果文件被其他进程锁定,那么您可以像您建议的那样使用“重试”策略。 OTOH,您真的需要关闭然后重新打开这些文件吗?在您的过程完成之前,您不能让它们保持打开状态吗?一个提示:当您尝试再次重新打开文件时添加延迟( sleep )。大约 100 毫秒应该足够了。如果病毒扫描器让文件打开那么久,那么它就是一个真正糟糕的扫描器。扫描仪质量差的客户应该看到他们会看到的异常消息。通常,最多尝试三次... -> 打开,失败再试,第二次失败再试,第三次失败就崩溃。

记得以用户友好的方式崩溃。

关于windows - 是否可以合理地绕过扫描工作目录的防病毒软件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/964920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com