我开始用C#编写Windows 8应用程序,我需要帮助了解如何从我的应用程序中访问文件。
前提:从我学到的到现在为止,我知道作为标准应用程序只能访问某些文件夹(如LocalFolder等)。克服这一问题的一种方法是使用FileOpenPicker一次,然后使用FutureAccessList以编程方式访问文件。
现在我的处境:
不使用FileOpenPicker,我如何从我的应用程序中访问这些文件?到目前为止,我使用WebRequest和WebResponse从互联网站点下载文件(没有问题),然后使用WebRequest和WebResponse访问位于应用程序的LocalFolder中的文件(仍然没有问题),但现在,如果我这样做的话:
WebRequest c = WebRequest.Create(@"file://C:\im.jpg");
WebResponse r = await c.GetResponseAsync();我得到一个System.Net.WebException告诉我,我无权访问该文件。如何使用企业身份验证向应用程序提供域凭据?我在MSDN上没有找到很多关于这方面的文档,但从我发现的一点点文档来看,我认为这种功能是打算在这样的情况下使用的。另外,WebRequest是应该走的正确道路吗?我是否应该尝试以其他方式访问这些文件?
谢谢你,丹尼尔
发布于 2013-05-17 04:50:17
无论您如何尝试从Windows应用程序访问文件,权限仍然适用,也就是说,如果用户在使用FileOpenPicker或FolderPicker之前没有授予您访问权限,则无法访问磁盘上的随机文件或文件共享。
最好的方法可能是让用户使用FolderPicker访问根(磁盘或共享的根),并将对它的引用存储在FutureAccessList中。这样,将来您就可以访问该驱动器上的所有文件,而无需任何用户干预。
让服务作为解决办法应该适用于共享(为什么不直接使用HTTP来允许文件下载呢?)但是对于本地文件系统来说不是这样,因为您的应用程序无法访问本地网络资源(即本地主机上的服务),除非您是从VS运行它或手工使用CheckNetIsolation.exe。
发布于 2013-05-16 12:33:57
我不知道企业身份验证,但打开文件通常使用StorageFile::GetFileFromPathAsync。当您拥有权限时,它也适用于UNC路径名。
https://stackoverflow.com/questions/16583376
复制相似问题