2013-09-23 43 views
0

任何人都可以解釋System.Windows.Forms.Application.ProductVersion如何可以拋出FileNotFoundExceptionSystem.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處理程序來記錄所有這些錯誤,並且這些例程沒有被調用。

任何想法?

+1

您是否檢查用戶與其他工作用戶的權限是否有差異? – Steve

+0

用戶完全控制網絡共享。此外,錯誤是不一致的,有時有效,有時不會。 – sgmoore

回答

0

在訪問網絡共享位置時可能會觀察到延遲。您可以首先檢查該文件是否存在於該位置,然後獲取該版本,以避免這種情況。

+0

如果文件正在運行,文件如何不能存在? –

+0

@lazyberezovsky,我知道,作爲例外是FileNotFound,操作系統試圖找到網絡共享上的文件,並得到一些延遲。爲了避免這一點,我們可以做文件存在檢查。 – stamhaney

+0

堆棧軌道顯示它正在調用GetVersionInfo,它根據http://msdn.microsoft.com/en-us/library/system.diagnostics.fileversioninfo.getversioninfo.aspx將文件名稱作爲參數。鑑於這是一個公共方法,可以將任何東西作爲參數,它幾乎可以肯定**已經**調用File.Exists並且大概這是失敗並拋出異常(問題是爲什麼)。 – sgmoore