浏览器禁止HTML直接运行EXE以防恶意操作,需通过自定义协议、Electron类桌面应用或本地服务代理等方案间接实现,且均需用户参与或特定环境支持。
HTML 本身无法直接运行 EXE 文件,这是浏览器安全机制决定的——出于安全考虑,现代浏览器(Chrome、Firefox、Edge 等)完全禁止网页通过 JavaScript 或 HTML 直接调用本地可执行程序。所谓“HTML 运行 EXE”,实际需要服务端配合、特定环境或用户主动授权,不存在纯前端一键点击就运行本地程序的通用方案。
这是核心前提,必须明确:
window.open("file:///C:/xxx.exe")、location.href="file://..." 或 ActiveXObject 等调用方式如果确实需要从网页触发本地程序,以下是几种真实可用、但各有前提的方法:
myapp://open?param=1 的协议,安装时把 EXE 关联到该协议;网页中用 启动程序。首次点击会弹出系统确认框,用户点“是”后启动对应程序。child_process.exec() 安全运行本地 EXE。适合开发内部工具或客户端软件。http://localhost:3000/run),网页发请求,服务端用系统命令执行 EXE(仅限可信环境,且需用户提前运行该服务)。
ActiveXObject("WScript.Shell") 执行,但已淘汰,存在极高风险,切勿用于生产环境。网上很多“HTML 调用 EXE 教程”实际无效或误导,注意避开:
—— 现代浏览器直接报错,Edge/Chrome 已彻底移除支持下载 —— 这只是下载,不是“运行”基本上就这些。想让网页“启动本地程序”,本质是跨域权限问题,没有银弹。优先考虑自定义协议或转为桌面应用,既可控又相对安全。