我开始使用 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 应用商店应用访问文件,权限仍然适用,即,如果用户之前未授予您访问权限,您将无法访问磁盘或文件共享上的随机文件使用 FileOpenPicker
或 FolderPicker
。
您能做的最好的事情可能是让用户使用 FolderPicker
访问根目录(磁盘或共享),并将对其的引用存储在 FutureAccessList
中。这样,您将来就可以访问该驱动器上的所有文件,而无需任何用户干预。
将服务作为解决方法应该适用于共享(为什么不只使用 HTTP 来允许文件下载?),但不适用于本地文件系统,因为您的应用程序无法访问本地网络资源(即本地主机上的服务),除非您从 VS 运行它或手动使用 CheckNetIsolation.exe
。
关于c# - Windows 8 应用程序 : accessing local and network files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16583376/