【问题标题】:RetrievePropertiesAsync and COMException E_FAILRetrievePropertiesAsync 和 COMException E_FAIL
【发布时间】:2014-02-18 00:40:41
【问题描述】:

我在一台机器上遇到问题。是 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

错误信息:

对 COM 组件的调用已返回错误 HRESULT E_FAIL。

行号:

mscorlib

所以我想也许这个人的视频文件夹本身就是问题所在。但是,当我尝试检索 USB 驱动器的属性时,代码可以正常工作。

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

【问题讨论】:

  • E_FAIL 是无法诊断的错误代码。询问仅在驱动器上有意义的文件夹上的属性肯定应该与它有关。
  • @HansPassant 感谢您提供错误代码信息。但你的怀疑并不正确。原来该用户的 VideosLibrary 文件夹已损坏。他们必须删除当前的 VideoLibrary“文件夹”,然后在 Windows 资源管理器中右键单击“库 > 恢复默认库”。这解决了这个问题。

标签: c# com windows-runtime


【解决方案1】:

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

解决方案是:删除旧的损坏的 VideosLibrary,然后打开 Windows Explorer 浏览器并右键单击“库 > 恢复默认库”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多