3

这对我来说太离奇了。在我的 Framework 4.0 WinForms 应用程序中,FileSystemWatcher 最近开始为 OldName 提供 null,并且只为 OldFullPath 提供父文件夹,而不是旧文件名的完整路径。但是,某些 Windows 7 计算机会执行此操作,而其他计算机则不会。我尝试暂时卸载我们公司的防病毒程序,但没有任何区别。我回滚了我的代码,但没有任何区别。

我尝试将我的应用程序从 Framework 4.0 切换到 4.5.2,但问题仍然存在。事实上,我认为问题比 .NET 低,因为我编写了一个使用 ReadDirectoryChangesW() 的测试 C++ 程序,并且发生了类似的问题:问题计算机从未收到 FILE_ACTION_RENAMED_OLD_NAME 通知,只有 FILE_ACTION_RENAMED_NEW_NAME 通知。

我比较了问题计算机上正在运行的进程和已结束的进程,但没有在非问题计算机上运行。两台计算机都安装了最新的 Windows 更新;我希望不必开始卸载它们。

我有一台 Windows 8 计算机,但问题不存在;但是,从 7 升级到 8 不是其他几个部署的选项。

我突然想到在各自的机器上查看 kernel32.dll,因为那是 ReadDirectoryChangesW() 所在的地方。这不一样。

工作:v6.1.7601.18798 没有工作:v6.1.7601.18869

我需要适应的 API 最近是否有更改?

更新:我发现了一台带有 v6.1.7601.18409 的非工作机器,所以这不是问题。

4

1 回答 1

3

一句话,卡巴斯基。

详细地说,我以为我已经测试过删除 KAS,但也许我没有在之后重新启动或其他什么,这很奇怪,因为它也安装在没有出现问题的工作计算机上 - 相同版本的 KAS。

请注意,此版本是企业版,它安装:

Kaspersky Endpoint Security 10 for Windows 和 Kaspersky Security Center 网络代理

中央策略被推送到每台客户端计算机并强制执行。它可以控制设置,例如受信任的应用程序(白名单)。当 IT 为我的特定应用程序推出白名单条目时,它解决了问题。

请注意,每个受信任的应用程序条目都有多个复选框可供选择。此修复程序只需要其中一个。

在设置 | 防病毒保护 | 排除和受信任的应用程序 | 设置,有一个可以添加的列表。

不扫描打开的文件 X 不监视应用程序活动 不继承父进程(应用程序)的限制 不监视子应用程序活动 允许与应用程序界面交互 不扫描网络流量

值得一提的是我的同事 Arti Chauhan,他不止一次建议 KAS 可能是问题所在。当我猜我没有完全测试时,我以为我已经完全测试了。

于 2015-08-19T14:25:12.327 回答