2014-02-13 29 views
0

我在一個機器上有問題。它是Windows 8.1和x64,但它似乎並不是真正的問題。RetrievePropertiesAsync和COMException E_FAIL

我已在以下所有平臺ARM,x86和x64上的設備和運行Windows 8和8.1的筆記本電腦上測試此代碼。 只有這一臺筆記本電腦會拋出COMException。

此代碼:

// Yes, I have checked the appropriate box in the manifest to access VideosLibrary. 
StorageFolder vidFolder = KnownFolders.VideosLibrary; 

var SystemFreeSpace = "System.FreeSpace"; 
var SystemCapacity = "System.Capacity"; 
var SystemPercentFull = "System.PercentFull"; 
var properties = new List<string>() { SystemFreeSpace, SystemCapacity, SystemPercentFull }; 

// THIS blows up on only one device. Though on Windows 8.1 I get null values (different issue). 
var props = await vidFolder.RetrievePropertiesAsync(properties); 

這是異常消息。

錯誤代碼:

-2147467259

錯誤消息:

錯誤HRESULT E_FAIL已經從對COM組件的調用返回。

行號:

的mscorlib

所以我而回想,也許這個人的視頻文件夾本身的問題。當我嘗試檢索USB驅動器的屬性時,代碼工作正常。

有沒有其他人遇到過這個問題?

+0

E_FAIL是一個不可診斷的錯誤代碼。要求在驅動器上有意義的文件夾屬性應該與它有關。 –

+0

@HansPassant感謝您的錯誤代碼信息。但你的懷疑是不正確的。原來這個用戶的VideosLibrary文件夾已損壞。他們必須刪除當前的VideoLibrary「文件夾」,然後在Windows資源管理器中右鍵單擊「庫>恢復默認庫」。這解決了這個問題。 –

回答

1

似乎這個問題是因爲用戶的VideosLibrary「文件夾」已損壞。這可能是由於從Win7升級到Win8到Win8.1(僅僅是一個理論)而發生的。

解決方法是:刪除舊的已損壞的VideosLibrary,然後打開Windows資源管理器瀏覽器,然後右鍵單擊「庫>恢復默認庫」。

restore default libraries