我有一段代码试图在一秒钟内写入磁盘许多文件.但是,我已经安装了Kaspersky Anrivirus 2011.
Stream:= TFileStream.Create(sName, fmCreate);
Run Code Online (Sandbox Code Playgroud)
该代码完全适用于卡巴斯基2010,如果我禁用其扫描仪(它不能完全从内存中卸载 - 除非它已卸载),它也适用于卡巴斯基2011.如果(Kaspersky 2011正在运行并且我懒散地写入磁盘),代码也可以工作.所以它显然不够快,无法处理我的磁盘请求.
我得到的错误是EFCreateError('无法创建xxx文件blablabla').错误是随机的.大多数文件都写入磁盘.大约10%的失败.
我曾试图获得支持但却无法在卡巴斯基找到真正的人与之交谈.他们所谓的"支持"实际上是一个FAQ数据库.当然,它讲的是如何安装产品和相关的东西.关于编程相关问题没有任何内容.有任何想法吗?
PS:这对整个Delphi社区都有影响!如果他们使用KIS 2011作为防病毒软件,我们所有客户都将无法使用Delphi软件.目前我建议我的用户禁用他们的防病毒软件,但我需要一个真正的解决方案.
如果有KIS 2011的人可以确认问题,那就太好了.只需创建一个小程序,使用TFileStream将200个小文件写入磁盘.
更新:
要测试代码,请尝试在循环中使用代码来创建1000个文件.该程序创建了一堆文件(随机数),然后在StreamFile:= TFileStream.Create失败.更新:可以通过在创建每个文件后输入一个小延迟来解决此问题.
https://docs.google.com/forms/d/1H3_O1z1iEqfh9ZT9u3B0R1tGEj-Hc9o7rAE0LKPr33Y
2013年更新
从今天下午开始(更新后)KIS与Delphi发生冲突.每次编译项目时,KIS都会达到100%的CPU利用率.我将不得不卸载它.
2017年更新
从2017年开始,我所有的Delphi程序都会神奇地消失所有误报警.似乎卡巴斯基这样的程序从其病毒列表中删除了Delphi生成的可执行文件就足够了; 所有其他较小的防病毒程序紧随其后.
Delphi 7,Win 7(32),KIS 2011
Chr*_*ton 10
您需要告诉您的用户,即卡巴斯基的客户,卡巴斯基正在干扰您的软件操作,并且他们应该报告它.表达您的挫败感,作为开发人员,您无法访问真正的人类.这是反恶意软件公司反应的唯一方式 - 与付费客户的公关差.
卡巴斯基 = 盗版公司?可能是,可能不是。也许只是另一家产品不佳且不存在支持的公司。他们的“支持”包括常见问题数据库和自动电子邮件回复程序。电话也连接到答录机。他们的自动回答不断向我解释如何将我的程序添加到 KIS“异常”数据库中。我一直在回复那些愚蠢的电子邮件,说我不能亲自去我家里的所有客户那里并将我的程序放在“例外”数据库中,如果他们能修复错误会更好。
当我最终得到一个非自动的答案(唯一的)时,支持人员的家伙尽可能粗鲁。
Delphi 程序员可能的解决方案:
* 不要检查用户是否对文件有写权限(为了不触发卡巴斯基错误)
* 检查用户是否有写权限。如果出现错误,通知用户卡巴斯基产生了问题,应该暂时禁用(在程序运行时)。使用 TRY EXCEPT 块来执行此操作。
建议(根据我过去的经验):
如果您在程序尝试写入磁盘时收到来自用户的奇怪错误报告,请不要总是责怪您的代码。还要检查外部因素(如卡巴斯基反病毒软件的存在)。
更新:
我刚刚申请了退款。如果他们不退款,我会要求退款(我强烈认为他们不会)。
结论
当我在 StackOverflow 上发布这篇文章时,我没有意识到问题的严重性,也没有意识到它会偏离最初的课程。我仍然认为这完全符合 StackOverflow 的目的。我们都知道,有时程序中的问题可能不是由我们的错误代码引起的,我们也无法控制这些问题的根源(21 人投票赞成这个问题 - 这意味着很多其他人遇到了 KIS 问题)。我们只能希望那些在非常低的水平上与用户系统交互的糟糕设计的程序(例如 KIS 防病毒程序)将很快得到修复,这样我们的销售就不会受到(太多)的影响。
当您的程序被标记为“有问题”而您无能为力时,这令人沮丧!
不是解决您问题的答案,但您应该通知卡巴斯基,他们可能不知道存在与 Delphi 库相关的病毒签名。
如果您的程序不太复杂,您可能想尝试 Lazarus/FPC。它不如Delphi,但我已经使用它好几年了,并且在Windows/MacOS/Linux 中取得了很好的结果。