Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WinRT:枚举库和已知文件夹之外的文件的应用程序_C#_Windows 8_Windows Runtime_Enumeration_.net 4.5 - Fatal编程技术网

C# WinRT:枚举库和已知文件夹之外的文件的应用程序

C# WinRT:枚举库和已知文件夹之外的文件的应用程序,c#,windows-8,windows-runtime,enumeration,.net-4.5,C#,Windows 8,Windows Runtime,Enumeration,.net 4.5,我正在开发一个Metro应用程序,它在ListView控件中显示给定文件夹的内容。 MS决定开发人员不需要System.IO.Directory类,并将其完全从框架中删除 我正在寻找一个替代品,在metro风格的应用程序中枚举C#中的文件。我检查了MS提供的所有枚举示例,它们似乎都只使用KnownFolders类枚举Windows库,例如: StorageFolder picturesFolder = KnownFolders.PicturesLibrary; 并根据需要调用getfileas

我正在开发一个Metro应用程序,它在ListView控件中显示给定文件夹的内容。 MS决定开发人员不需要System.IO.Directory类,并将其完全从框架中删除

我正在寻找一个替代品,在metro风格的应用程序中枚举C#中的文件。我检查了MS提供的所有枚举示例,它们似乎都只使用
KnownFolders
类枚举Windows库,例如:

StorageFolder picturesFolder = KnownFolders.PicturesLibrary;
并根据需要调用
getfileasync()
GetFoldersAsync()
方法。如果我只想在图片或音乐库中列举,这些都是黄金。但是,我希望枚举库中未包含的目录上的文件

有人知道这在WinRT中是如何实现的吗?

来自:

当您使用C#和VB时,您使用的是完整的.NET框架。但是 他们选择向开发人员公开API的较小子集 推动Windows 8的新愿景

这一新愿景包括安全/沙盒系统和异步系统 编程。这就是为什么您不能直接访问文件系统或 套接字访问以及您习惯于使用的同步API的原因 没有暴露

现在,你注意到我说的是“暴露”而不是“消失”

他们所做的只是向编译器公开一组API 当你的目标是地铁概况。因此,您的应用程序将不会 意外调用文件。例如创建。但在运行时,CLR 将加载完整的类库,即包含 所以在内部,CLR可以调用 创建,只有您无权访问它

这种分裂类似于过去的分裂 Silverlight,不是每个API都被公开,mscorlib也在这里 授予应用程序不必确保系统安全的权限 安全

你可能认为你可以使用一些技巧(参考GAC) 库而不是编译器引用或使用反射来获取 到专用API,或P/调用到Win32)。但所有这些用途都将 被AppStore审查应用程序捕获,您将无法 通过Microsoft的应用商店发布您的应用程序

你仍然可以在你的系统上进行任何丑陋的黑客攻击。只是 无法通过AppStore发布

所以可能没有官方的方式,如果有非官方的方式,应用商店可能不会接受

一般来说,这是有道理的:我不想下载一个看似合法的应用程序,只是为了让它扫描我的硬盘,找到我的“budget.xls”电子表格,其中包括我的银行/信用信息

编辑:可以通过WinRT的文件选择器授予对安全文件/文件夹的临时访问权限,但必须由用户显式调用和选择。

您可以使用该方法从路径获取实例

StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(@"C:\...");

请注意,您可能没有权限对计算机上的所有路径执行此操作。

根据设计,您在Metro应用程序的这一领域非常有限。其理念是,Metro应用程序只能访问其信任访问的内容,因此您可以:

  • 访问特定于您的应用程序的本地存储
  • 访问一些著名的存储位置,或
  • 访问特定授予的位置

  • 查看一下,了解一下您可以访问哪些内容。

    类似的情况。想要访问要分析的chrome书签文件。最初不得不使用FileOpenPicker,但它返回的文件可以“缓存”在futureaccesslist(?)中,以便后续检索。

    Ahh,这就是我要找的页面。先告诉我,+1这些天,我在dev.windows.com和design.windows.com上生活和呼吸谢谢,这很有帮助。。但是如果你能帮我做一件事。。。当我尝试将DocumentsLibrary作为StorageFolder获取时,尽管我已在应用程序清单功能部分选中了它,但仍会出现访问被拒绝的异常。有什么想法吗???但是,我可以毫无问题地访问MusicLibrary。这不起作用,我的意思是,您可以获取该对象,但一旦尝试并访问它以枚举文件,它将抛出一个拒绝访问的异常。在完整桌面路径和非系统分区上的其他路径上尝试了它,都得到了相同的结果