2

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

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

现在我的情况:

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

谢谢,丹尼尔

4

2 回答 2

2

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

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

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

于 2013-05-17T04:50:17.237 回答
0

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

于 2013-05-16T12:33:57.937 回答