【问题标题】:Launch Windows Explorer from Metro style app从 Metro 风格应用程序启动 Windows 资源管理器
【发布时间】:2012-11-10 07:57:06
【问题描述】:

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

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

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

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

如果浏览器可以做到这一点,为什么我不能呢? 有没有办法让我打开 Windows 资源管理器,或者这超出了现实的可能性?

【问题讨论】:

标签: c# windows-8 microsoft-metro


【解决方案1】:

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

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

【讨论】:

  • 正如已经猜到的那样,启动文件协议或 explorer.exe 是不可能的。但是,我看不到文件选择器在这种情况下如何提供帮助。
【解决方案2】:

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

不过,这有点绕沙盒安全性进行最终运行,因此您可能希望拥有一个量身定制的 Web API,而不是只启动一组预打包的应用程序(如 Explorer 或您自己的应用程序之一) .

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      • 2015-10-26
      • 1970-01-01
      • 2012-03-20
      • 2013-03-12
      相关资源
      最近更新 更多