这对我来说太离奇了。在我的 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 的非工作机器,所以这不是问题。