【发布时间】:2012-12-14 13:19:10
【问题描述】:
我正在编写一个需要访问另一个程序的应用程序数据中的文件的 Windows 8 应用程序。我已经阅读了Window's file permssion guidelines 并没有找到办法。这甚至可能吗?如果是这样,我将如何去做?
【问题讨论】:
标签: c# visual-studio windows-8 microsoft-metro windows-store-apps
我正在编写一个需要访问另一个程序的应用程序数据中的文件的 Windows 8 应用程序。我已经阅读了Window's file permssion guidelines 并没有找到办法。这甚至可能吗?如果是这样,我将如何去做?
【问题讨论】:
标签: c# visual-studio windows-8 microsoft-metro windows-store-apps
这在 windows 商店应用程序中是不可能的,它们是沙盒的,需要声明诸如访问互联网、相机和类似的功能,而且你不能声明你想读取其他应用程序数据。
【讨论】:
AppData 不显示,除非我删除隐藏属性。
无法使用 winrt API。这就像每个进程的独立存储。
File access and permissions in Windows Store apps
但是使用 Hack 可以绕过沙盒环境。
How to bypass WinRT / Metro sandbox using simple trick.Sample + Guide
但此类应用在提交到 App Store 时不会通过 windows 8 兼容性测试。
【讨论】:
如果您不知道如何将 .net 用于 Windows 8 存储,则不可能。
这样你就得到了保存位置:
using Windows.Storage;
StorageFolder localFolder = ApplicationData.Current.LocalFolder;
您可以通过应用 URI 检索数据:
using Windows.Storage;
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync("ms-appdata:///local/file.txt");
【讨论】:
此答案取决于其他应用程序和您尝试访问的文件类型,但也许您可以实现对共享合同的支持并告诉 Windows 您愿意接受哪些类型的文件。然后,用户可以选择使用其他应用程序并与您的应用程序共享。我不确定这对您的需求有多可行,但是因为您没有提供有关您要获取哪些数据的详细信息。
【讨论】:
我找到了答案。我可以告诉用户在文件夹选择器中选择他们的用户文件夹。然后,一旦获得该权限,我就可以以编程方式导航到应用程序数据文件夹中的所需文件。
【讨论】: