Windows 8 metro应用程序访问任意文件路径

时间:2011-10-24 10:29:23

标签: file-io windows-8 microsoft-metro

在地铁中,以下代码将throw exception

String fileName = @"C:\Test\dd\ccc.jpg";
StorageFile file = await StorageFile.GetFileFromPathAsync(fileName);

然而,即使我检查了所有功能,也添加了文件选择器并允许所有文件类型。我仍然无法访问此文件,将抛出相同的异常。

有人知道如何在任意文件路径中读取文件吗?这在地铁风格应用中是否可行。

1 个答案:

答案 0 :(得分:5)

不可能。您可以访问库 - 图片,文档,视频 - 如果用户将该文件夹放入其中一个库(使用桌面端的Windows资源管理器),您就可以完成设置了。您甚至可以编写将文件夹放入库中的桌面exe,但是您无法自己启动该exe或确保用户没有手动更改库。

查找SHCreateItemInKnownFolder,获取用于库工作的shell API的起点。我没有尝试从Metro端调用这些API;你可以看看他们是否有所帮助,但我的赌注是他们无法获得。如果您不喜欢COM互操作到shell API,您可以查看Windows API Code Pack的源代码 - 我不想将所有内容捆绑到Metro应用程序,但您可以复制它的一部分到你的申请。