【发布时间】: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