Windows 8应用程序:访问本地和网络文件

时间:2013-05-16 09:12:38

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

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

前提:从我学到的东西到现在,我知道标准的应用程序只能访问某些文件夹(例如LocalFolder等)。解决此问题的一种方法是使用FileOpenPicker一次,然后使用FutureAccessList以编程方式访问该文件。

现在我的情况:

  • 我的电脑已连接到域名网络
  • 我的应用具有以下功能:企业身份验证,互联网(客户端和服务器),专用网络(客户端和服务器)
  • 我们假设我在网络共享中的 C: im2.jpg 中有一个名为 im.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是否应该遵循正确的路径?我应该尝试以其他方式访问这些文件吗?

谢谢Daniele

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

我不了解企业身份验证,但通常使用StorageFile::GetFileFromPathAsync打开文件。当您拥有权限时,这也适用于UNC路径名。