瀏覽器安全模型禁止 JavaScript 直接訪問本地文件系統或加載動態鏈接庫(DLL/so),否則構成嚴重安全漏洞。
工具 → Internet 選項 → 安全 → 自定義級別 → ActiveX)。new ActiveXObject('MyProgId') 實例化並調用方法。架構: 瀏覽器擴展 ↔️ Native Messaging Host(stdin/stdout JSON 通訊) ↔️ 本地進程(C#/Go/Node.js/Python)調用 DLL。
DllImport,Go 用 cgo,Node 用 ffi-napi),結果寫入 stdout。HKCU\Software\Google\Chrome\NativeMessagingHosts\com.example.alarm 指向宿主可執行文件路徑。chrome.runtime.sendNativeMessage('com.example.alarm', {action: 'trigger'}, response => ...)。| 方案 | 跨平台 | 部署複雜度 | 適用場景 |
|---|---|---|---|
| ActiveX | ❌ | 高 | 老舊 IE 內網系統 |
| Native Messaging | ✅ | 中 | 現代瀏覽器擴展場景 |
| WebUSB / WebHID | ✅ | 低 | USB/HID 設備(非通用 DLL) |
| 本地 HTTP 服務 | ✅ | 中 | 內網工具、Electron/Tauri 應用 |
若為內網管理工具,**Electron / Tauri / Wails** 打包桌面端最省心:主進程 Node/Go/Rust 直接調用 DLL,渲染進程走 IPC,無瀏覽器沙箱限制。純 Web 頁面強行調用 DLL 屬於逆潮流而動,請評估改造成本。