我可以从Web应用程序打开Windows资源pipe理器窗口吗?

我为我的一个客户build立了一个CRM,现在他们已经请求了一个有趣的function:

对于每个客户logging,他们在本地计算机上具有匹配的文件目录。 他们希望能够在Windows资源pipe理器中直接从Web应用程序中打开该文件夹(应用程序不需要访问目录/文件;只需启动Windows资源pipe理器,以便用户可以与其文件进行交互)。

在浏览器中运行的常规JavaScript显然是不可能的(幸好)。 我认为可能有某种方法可以通过为此构buildChrome扩展程序来实现此目的,但似乎Chrome扩展程序/应用程序只能访问沙盒文件系统,这根本无法满足我的需求。 由于Chrome停止了对NPAPI的支持,所以build立一个NPAPI插件是不可能的 。

文件URI也不能解决这个问题。 他们的显示是丑陋的,没有拖放,没有大的图标/缩略图,没有sorting等。他们需要Windows资源pipe理器的全部function。


我想到的唯一可行的select是创build一个本地node.js服务器,对该服务器做一个localhost CORS请求,然后从节点运行一个exec命令。

更好的主意?

一种可能性是在用户的操作系统上注册一个自定义URI协议处理程序,然后你的网页可以包含使用你的自定义协议的链接,比如openfolder://c/path/to/folder这种定制可能是最常用的在实践中看到itunes://链接。

一个快速的谷歌搜索让我看到这个体面的教程︰https: //support.shotgunsoftware.com/hc/en-us/articles/200213756-How-to-launch-external-applications-using-custom-protocols-rock- INSTEAD-OF-HTTP-

缺点是用户将不得不运行某种安装程序,以便设置正确的注册表项(或其他操作系统的非Windows等效项),并在磁盘上放置一个小脚本。 虽然这比运行node.js服务器要轻很多。

链接的教程使用Python脚本,但即使这可能是为了你的需要矫枉过正。 批处理文件可能就足够了。

编辑:一个额外的说明,请注意实现这样的自定义处理程序的安全隐患。 任何浏览器中的任何网页都可能利用您的自定义协议,攻击者可以将任意数据传递给您的脚本。 您应该采取措施,确保脚本不会意外执行可能被恶意网页注入的任意命令,并且只会打开一个文件夹而没有别的。

这将需要每个客户运行一个node.js服务器,这在你的情况下似乎是不现实的。

您可以使用文件URI 。

浏览器将默认拒绝打开它们。 但是,正如在这个答案中所建议的,您可以要求您的客户安装LocalLinks 。