You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过本地HTML+JavaScript编写的Word加载项运行本地EXE程序

在离线HTML+JS版Word加载项中运行本地EXE的可行方案

你尝试的两种方法失效的核心原因是现代Office加载项的安全限制:

  • window.open("file:///C:/Windows/notepad.exe"):Office加载项使用的WebView2(Windows)或WebKit(Mac)出于安全考虑,会拦截本地可执行文件的直接打开请求,仅触发下载。
  • ActiveXObject("Shell.Application"):仅支持旧版IE,现代Office加载项已切换到Chromium内核的WebView2,完全不兼容ActiveX,因此该方法无效。

以下是几种可行的离线解决方案:

方案1:VBA宏中间层(Windows专属,离线可用)

通过Word内置的VBA宏作为桥梁,让JS加载项调用宏来执行本地命令:

  1. 打开Word,启用「开发工具」选项卡,插入模块并添加VBA代码:
    Sub LaunchLocalEXE(exeFullPath As String)
        ' 启动指定路径的EXE,vbNormalFocus表示正常窗口显示
        Shell exeFullPath, vbNormalFocus
    End Sub
    
  2. 在你的JS加载项中,通过Office.js调用该宏:
    // 调用VBA宏,传入EXE路径
    Office.context.document.run("LaunchLocalEXE", "C:\\Windows\\notepad.exe")
        .then(() => console.log("程序已启动"))
        .catch(err => console.error("启动失败:", err));
    
    注意:需提前在Word中信任该宏文件,加载项需配置对应的权限(在manifest.xml中声明对VBA的调用权限)。

方案2:WebView2原生消息主机(Windows专属,需提前部署)

利用Office加载项底层的WebView2原生消息机制,通过本地原生程序中转启动EXE:

  1. 编写一个轻量Win32/WinForms程序,注册为WebView2的消息主机(需在注册表中添加对应项,指定程序路径)。
  2. 在JS加载项中发送消息到该主机:
    // 向自定义消息主机发送启动指令
    chrome.runtime.sendMessage("com.yourdomain.localexe.launcher", {
        action: "run",
        exePath: "C:\\Windows\\notepad.exe"
    }, (response) => {
        console.log(response ? response.status : "无响应");
    });
    
  3. 原生主机程序收到消息后,调用ShellExecute或CreateProcessAPI启动目标EXE。
    注意:需将原生程序提前部署到用户本地,离线环境下无需网络。

方案3:PowerShell脚本中转(Windows专属)

通过VBA调用PowerShell脚本执行启动命令,适合不想编写原生程序的场景:

  1. 编写PowerShell脚本StartEXE.ps1:
    param([string]$ExePath)
    # 启动指定程序
    Start-Process -FilePath $ExePath -WindowStyle Normal
    
  2. 修改VBA宏调用该脚本:
    Sub LaunchViaPowerShell(exePath As String)
        Dim psCmd As String
        ' 绕过执行策略,调用脚本
        psCmd = "powershell.exe -ExecutionPolicy Bypass -File ""C:\\Scripts\\StartEXE.ps1"" """ & exePath & """"
        Shell psCmd, vbNormalFocus
    End Sub
    
  3. 同样通过Office.js的document.run调用该VBA宏即可。
    注意:需确保用户的PowerShell执行策略允许运行本地脚本。

重要限制

  • 所有方案仅支持Windows平台,Mac版Office的WebKit引擎安全限制极严,无法直接启动本地EXE。
  • 必须确保用户信任相关组件(宏、原生程序、脚本),否则会被Office安全策略或杀毒软件拦截。
  • 全程离线需提前将所有依赖(宏文件、原生程序、脚本)部署到用户本地设备。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 14:40:29