c# - Windows 8 应用程序 : accessing local and network files

标签 c# windows-8 windows-store-apps

我开始使用 C# 编写 Windows 8 应用程序,我需要帮助来了解如何从我的应用程序中访问文件。

前提:从我到目前为止所学到的知识来看,我知道作为标准,应用程序只能访问某些文件夹(例如 LocalFolder 等)。解决此问题的一种方法是使用 FileOpenPicker 一次,然后使用 FutureAccessList 以编程方式访问文件。

现在我的情况:

  • 我的电脑已连接到域网络
  • 我的应用具有以下功能:企业身份验证、互联网(客户端和服务器)、专用网络(客户端和服务器)
  • 假设我在 C: 中有一个名为 im.jpg 的文件,在名为 的网络共享中有一个名为 im2.jpg 的文件分享。我(我的域帐户)有权访问这些文件。

如何在不使用 FileOpenPicker 的情况下从我的应用程序访问这些文件? 到目前为止,我使用 WebRequest 和 WebResponse 从互联网站点下载文件(没有问题),然后我使用 WebRequest 和 WebResponse 访问位于我的应用程序的 LocalFolder 中的文件(仍然没有问题),但是现在,如果我这样做像这样的东西:

WebRequest c = WebRequest.Create(@"file://C:\im.jpg");
WebResponse r = await c.GetResponseAsync();

我收到 System.Net.WebException ,告诉我无权访问该文件。 如何使用企业身份验证向应用程序提供我的域凭据?我在 MSDN 上没有找到太多关于此的文档,但从我发现的一点点来看,我认为此功能旨在用于这样的情况。另外,WebRequest 是正确的路径吗?我应该尝试以其他方式访问这些文件吗?

谢谢,丹尼尔

最佳答案

无论您如何尝试从 Windows 应用商店应用访问文件,权限仍然适用,即,如果用户之前未授予您访问权限,您将无法访问磁盘或文件共享上的随机文件使用 FileOpenPickerFolderPicker

您能做的最好的事情可能是让用户使用 FolderPicker 访问根目录(磁盘或共享),并将对其的引用存储在 FutureAccessList 中。这样,您将来就可以访问该驱动器上的所有文件,而无需任何用户干预。

将服务作为解决方法应该适用于共享(为什么不只使用 HTTP 来允许文件下载?),但不适用于本地文件系统,因为您的应用程序无法访问本地网络资源(即本地主机上的服务),除非您从 VS 运行它或手动使用 CheckNetIsolation.exe

关于c# - Windows 8 应用程序 : accessing local and network files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16583376/

相关文章:

c# - 在 C# 中使用正则表达式解析日期

c# - 如何以编程方式将 Wrap Grid 滚动到 Windows 应用商店应用程序的 ItemSsource 中的特定项目?

windows-8 - CoreDispatcher.HasThreadAccess 的属性是什么?

c# - 如何通过 3G 连接检查互联网连接状态?

c# - UWP 中是否有替代 TemplatePartAttribute 的方法?

c# - NullReferenceException 而涉及的对象是有效的

c# - 用于比较的订单日期列表

c# - MemoryAppender PatternLayout 不渲染?

html - 垂直滚动,带 WinJS 的 ListView

c# - 检查应用程序是否在模拟器上运行