从Metro风格应用启动Windows资源管理器

时间:2012-11-10 07:57:07

标签: c# windows-8 microsoft-metro

我想将文件下载到Windows应用商店应用中的DownloadsFolder。然后我想在DownloadsFolder上打开一个Windows资源管理器(实际上是我在DownloadsFolder中创建的文件夹)
但我无法弄明白该怎么做。

此stackoverflow问题Launching a Desktop Application with a Metro-style app建议使用Launcher.LaunchUriAsync。但文件声称:

  

您无法使用此方法在本地区域中启动URI。例如,应用程序无法使用file:///协议访问本地计算机上的文件。相反,您必须使用Storage API来访问文件。

事实上,我试图使用“file:”协议来调出资源管理器窗口。当我尝试使用此机制时,Launcher.LaunchIUriAsync失败。

如果浏览器可以这样做,为什么我不能? 有没有办法让我启动Windows资源管理器,还是在可能性之外?

3 个答案:

答案 0 :(得分:1)

我认为您无法从地铁启动Windows资源管理器。但是,您可以使用的一件事是文件选择器。

http://code.msdn.microsoft.com/windowsapps/File-picker-app-extension-0cb95155

答案 1 :(得分:0)

如果您愿意在解决方案中安装一些非Windows应用商店组件,则可以采用解决方法。虽然无法直接启动进程,但始终可以在Windows服务中运行HTTP侦听器,该服务侦听来自沙盒Windows应用商店(Metro风格)应用程序的命令,并为您启动资源管理器(或任何其他进程)。执行此操作的一个简单方法是在Windows服务中使用Web API服务 - 只需在控制器中实现GET操作,并为可执行文件启动参数以及可选的可执行参数。

这有点围绕沙盒安全性进行最终运行,因此您可能希望拥有一个定制的Web API,而只需启动一组预先打包的应用程序(如资源管理器或您自己的应用程序之一)

当然,对于消费者应用程序而言,这不是一个好的解决方案,因为您无法从Windows应用商店安装所有内容。但是,对于LOB应用程序来说,这并不是一个很糟糕的妥协,因为您通常可以更好地控制环境。这是将一些指标或其他数据显示在实时图块中并在单击图块时启动桌面应用程序的好方法。这是否能带来良好的用户体验是一次完全不同的对话。

答案 2 :(得分:0)

BatRT允许您从WinRT应用程序运行批处理文件命令。它利用URI调用。这可用于打开应用程序或执行文件操作。