C# System.Windows.Forms.Application.ProductVersion生成FileNotFoundException

C# System.Windows.Forms.Application.ProductVersion生成FileNotFoundException,c#,winforms,C#,Winforms,有人能解释System.Windows.Forms.Application.ProductVersion如何引发FileNotFoundException吗 堆栈跟踪是 Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info: System.IO.FileNotFoundException Stack: at Syste

有人能解释System.Windows.Forms.Application.ProductVersion如何引发FileNotFoundException吗

堆栈跟踪是

Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.FileNotFoundException
Stack:
 at System.Diagnostics.FileVersionInfo.GetVersionInfo(System.String)
 at System.Windows.Forms.Application.GetAppFileVersionInfo()
 at System.Windows.Forms.Application.get_ProductVersion()
该错误只影响一个用户,并且不一致,但当它发生时,是应用程序启动时,因此必须存在exe才能启动应用程序

exe驻留在网络共享上,但没有任何网络或磁盘错误的证据

同样奇怪的是,程序设置UnHandledException和ThreadException处理程序来记录所有此类错误,而这些例程没有被调用


有什么想法吗?

在访问网络共享位置时可能观察到延迟。您可以先检查该文件是否存在于该位置,然后获取版本,以避免出现这种情况。

您是否检查了该用户与其他工作用户的权限是否存在差异?该用户完全控制网络共享。此外,错误不一致,有时有效,有时无效。如果是正在运行的文件,文件怎么可能不存在?@lazyberezovsky,我知道,由于异常是FileNotFound,操作系统正在尝试在网络共享上定位文件,并且有一些延迟。为了避免这种情况,我们可以执行文件存在检查。堆栈跟踪显示它正在调用GetVersionInfo,它根据将文件名作为参数。考虑到这是一个公共方法,可以将任何内容作为参数,几乎可以肯定它已经在调用File.Exists,可能这是失败的,引发异常的问题是原因。因为我们有.Net源代码,我们可以查看它:查看。在GetVersionInfo方法中,它当然会检查文件是否存在,如果返回false read permission被拒绝,它会尝试获取完整路径并请求读取访问,如果这不会引发异常,则会引发FileNotFoundException。因此,原因似乎是路径发现问题。