我可以从 Web 应用程序打开 Windows 资源管理器窗口吗?
Can I open a Windows Explorer window from a web app?
我为我的一个客户构建了一个CRM,现在他们要求一个有趣的功能:
对于每个客户记录,他们在本地计算机上都有一个匹配的文件目录。他们希望能够直接从 Web 应用程序中在 Windows 资源管理器中打开该文件夹(应用程序不需要访问目录/文件;它只需要启动 Windows 资源管理器,以便用户可以与其文件进行交互(。
这显然是不可能的,在浏览器中运行的常规JavaScript(谢天谢地(。我认为可能有一些方法可以通过为此目的构建Chrome扩展来实现这一点,但是似乎Chrome扩展程序/应用程序只能访问沙盒文件系统,这根本无法满足我的需求。构建NPAPI插件是不可能的,因为Chrome正在停止对NPAPI的支持。
文件 URI 也不能解决此问题。他们的显示很丑陋,没有拖放,没有大图标/缩略图,没有排序等。他们想要Windows资源管理器的全部功能。
我想到的唯一可行的选择是创建一个本地节点.js服务器,向该服务器发出本地主机 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等效项(并将一个小脚本放在磁盘上。不过,这将比运行您提议的节点.js服务器轻得多。
链接的教程使用 Python 脚本,但即使这样也可能是多余的,以满足您的需求。批处理文件可能就足够了。
编辑:另外一点,请注意实现这样的自定义处理程序的安全隐患。任何浏览器中的任何网页都可能利用您的自定义协议,攻击者将能够将任意数据传递给您的脚本。您应该采取措施确保脚本不会意外执行可能由恶意网页注入的任意命令,并且它只会打开一个文件夹,而不会打开其他任何内容。
这将要求每个客户运行一个节点.js服务器,这在您的情况下似乎不切实际。
可以使用文件 URI。
默认情况下,浏览器将拒绝打开它们。但是,正如本答案中所建议的,您可以要求您的客户安装本地链接。
- 资源管理器9上的html5视频缓存
- Cordova创建的文件不会显示在Windows资源管理器中,除非重新启动设备
- 如何在电话间隙中打开系统文件资源管理器
- 如何获取用户访问令牌,与图形 API 资源管理器中使用的令牌相同
- 我可以从 Web 应用程序打开 Windows 资源管理器窗口吗?
- 使用 php 下载 PDF,不在资源管理器和 safari 中工作
- 在远程服务器上时不显示强环路环回资源管理器
- 使用javascript/html打开资源管理器
- 如何使事件onchange的HTML输入对象不提示文件资源管理器
- 文件资源管理器,存储路径
- angularjs nggrid windows资源管理器显示细行,但在firefox中可以正常工作
- 谷歌图表-设置资源管理器边界/间隔
- 在Java代码中使用Javascript函数关闭windows资源管理器弹出窗口
- 创建Windows 8资源管理器模拟-鼠标选择问题
- 如何在rad文件资源管理器中搜索当前文件夹,包括子文件夹
- 所选的链接类在网络资源管理器上不能正确显示
- SharePoint;JavaScript-;用资源管理器打开”;问题
- 为什么这个JavaScript只在IE资源管理器中工作
- 是否可以使用 JavaScript 对 HTA 进行 Windows 资源管理器搜索
- Angular 的错误消息“无法实例化模块”仅在资源管理器中