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

标签 javascript ajax windows filesystems

我为我的客户构建了一个 CRM,现在他们要求一个有趣的功能:

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

这对于在浏览器中运行的常规 JavaScript 显然是不可能的(谢天谢地)。我认为可能有一些方法可以通过为此目的构建 Chrome 扩展来实现这一点,但似乎 Chrome 扩展/应用程序只能访问沙盒文件系统,这根本不能满足我的需求。在问题之外构建 NPAPI 插件 since Chrome is discontinuing support for NPAPI .

文件 URI 也不能解决这个问题。他们的显示很丑陋,没有拖放、没有大图标/缩略图、没有排序等。他们想要 Windows 资源管理器的全部功能。


我想到的唯一可行的选择是创建本地 node.js 服务器,向该服务器发出本地主机 CORS 请求,然后从节点运行 exec 命令。

有更好的主意吗?

最佳答案

一种可能是向用户的操作系统注册自定义 URI 协议(protocol)处理程序,然后您的网页可以包含使用自定义协议(protocol)的链接,例如 openfolder://c/path/to/folder 这种定制在实践中可能最常见于 itunes:// 链接。

快速 Google search把我带到了这个看起来不错的教程: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 脚本,但即便如此也可能无法满足您的需求。一个批处理文件可能就足够了。

编辑:另外请注意,请注意实现这样的自定义处理程序的安全隐患。任何浏览器中的任何网页都可能利用您的自定义协议(protocol),并且攻击者能够将任意数据传递给您的脚本。您应该采取措施确保脚本不会意外执行可能由恶意网页注入(inject)的任意命令,并且它只会打开一个文件夹而不会打开其他任何东西。

关于javascript - 我可以从 Web 应用程序打开 Windows 资源管理器窗口吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19140623/

相关文章:

javascript - Node.js 使用 Express 和 Mongoose 设置 Passport 时出现问题

javascript - 在 JavaScript 中模拟 'new' 运算符

jquery和IE提交,ajaxForm不工作

php - 如何使用 PHP 检查请求是否是 AJAX 请求

jquery - 如何将ajax放入循环中?

sql - 如何从 C/C++ 应用程序进行 SQL 查询?

windows - vbs中如何传递包含空格的参数

javascript - GCC预处理器如何用空行替换#define

javascript - Array map 和 rxjs map 有什么区别

windows - 如何在 Windows 上将 Apache Ignite 作为守护进程运行