我开始使用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是否应该遵循正确的路径?我应该尝试以其他方式访问这些文件吗?
谢谢Daniele
答案 0 :(得分:2)
无论您如何尝试从Windows应用商店应用访问文件,权限仍然适用,即如果用户之前未授予您访问权限,则无法访问磁盘或文件共享上的随机文件使用FileOpenPicker
或FolderPicker
。
您可以做的最好的事情可能是让用户使用FolderPicker
访问(磁盘或共享)的根目录,并在FutureAccessList
中存储对它的引用。通过这种方式,您将来无需任何用户干预即可访问该驱动器上的所有文件。
将服务作为变通方法应该适用于共享(为什么不使用HTTP来允许文件下载?)但不适用于本地文件系统,因为您的应用程序无法访问本地网络资源(即localhost上的服务),除非您是从VS运行它或手动使用CheckNetIsolation.exe
。
答案 1 :(得分:0)
我不了解企业身份验证,但通常使用StorageFile::GetFileFromPathAsync打开文件。当您拥有权限时,这也适用于UNC路径名。