RetrievePropertiesAsync和COMException E_FAIL

时间:2014-02-13 21:52:32

标签: c# com windows-runtime

我在一台计算机上遇到问题。它是Windows 8.1和x64,但它似乎不是真正的问题。

我已经在以下所有平台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驱动器的属性时,代码工作正常。

还有其他人遇到过这个问题吗?

1 个答案:

答案 0 :(得分:1)

似乎问题是因为用户的VideosLibrary“文件夹”已损坏。这可能是由于从Win7到Win8到Win8.1的升级过程(仅仅是理论)。

解决方案是:删除旧的已损坏的VideosLibrary,然后打开Windows资源管理器浏览器并右键单击“Libraries&gt; Restore default libraries”。

restore default libraries