You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过Chrome应用模式窗口在资源管理器中打开本地或网络文件夹?

在Chrome中打开网络共享文件夹的无安全限制变通方案

我之前也帮内部团队解决过类似的问题,Chrome的安全限制确实挺严格,但针对你的内部应用场景,有几个不用全局禁用Web安全的变通方案,亲测有效:

方案1:系统级自定义协议(Windows)

这个方法通过在Windows注册表注册一个自定义协议,让Chrome调用系统资源管理器直接打开文件夹,完全绕过Chrome的网页安全限制。

步骤:

  1. 新建一个后缀为.reg的文件,复制以下内容:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\folder]
@="URL:Folder Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\folder\shell]
@="open"

[HKEY_CLASSES_ROOT\folder\shell\open\command]
@="explorer.exe \"%1\""
  1. 双击这个.reg文件,将内容导入注册表(需要管理员权限)。
  2. 在你的HTML中使用这个自定义协议创建链接:
<a href="folder:////printer-folder">打开打印机共享文件夹</a>

注意:链接里用四个斜杠是因为协议前缀folder://之后,需要加上原共享路径的\\,合起来就是////

点击这个链接时,系统会直接调用资源管理器打开\\printer-folder,完全不受Chrome的网页安全限制。

方案2:用Electron封装内部应用

如果你的内部应用可以改成桌面应用形式,Electron是绝佳选择——它基于Chrome内核,但允许直接调用系统级API,无需修改Chrome设置。

实现示例:

  1. 在Electron的渲染进程代码中,添加按钮点击事件:
// 假设你的按钮id是open-folder-btn
document.getElementById('open-folder-btn').addEventListener('click', async () => {
  const { shell } = require('electron');
  try {
    await shell.openPath('\\\\printer-folder');
    console.log('文件夹已打开');
  } catch (err) {
    console.error('打开文件夹失败:', err);
  }
});
  1. 打包成桌面应用后,用户点击按钮就能直接打开共享文件夹,完全符合内部应用的需求。

为什么之前的方法无效?

Chrome默认会阻止网页中的file://协议访问网络共享路径,这是核心的安全限制——即使你用file:////printer-folder或者window.open,都会触发ERR_FILE_NOT_FOUND错误,因为Chrome不会将网络共享路径识别为合法的本地文件资源。

内容的提问来源于stack exchange,提问作者Anthony LoPrimo

火山引擎 最新活动