首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript 獲取硬碟序列號:ActiveXObject 僅限 IE/舊 Edge,現代替代方案

     編輯:程式設計綜合問答

原始碼限制

ActiveXObject("WbemScripting.SWbemLocator") **僅在 IE/舊版 Edge (非 Chromium) 支援**,需:

  • 站點列入「信任網站」
  • 啟用「對未標記為安全的 ActiveX 控制項初始化並編寫腳本」
  • 用戶同意提示

**現代瀏覽器 (Chrome/Firefox/Edge 79+) 完全不支援**,無法通用。

改進版代碼 (仍限 IE)

try {
    var locator = new ActiveXObject("WbemScripting.SWbemLocator");
    var service = locator.ConnectServer(".");
    var disks = service.ExecQuery("SELECT SerialNumber FROM Win32_PhysicalMedia");
    var enumDisks = new Enumerator(disks);
    for (; !enumDisks.atEnd(); enumDisks.moveNext()) {
        var disk = enumDisks.item();
        if (disk.SerialNumber) console.log(disk.SerialNumber.trim());
    }
} catch (e) {
    console.error("ActiveX 不支援或被阻擋:", e);
}

現代替代方案

方案適用場景備註
WebUSB / Serial API實體裝置連接需用戶授權、HTTPS、裝置支援 WebUSB
瀏覽器指紋庫追蹤/風控Canvas/音頻/字體指紋,非硬體序列號
原生應用/Electron/Tauri桌面端需硬體資訊Node.js wmic/smartctl 可獲完整硬體資訊
伺服器端驗證授權/防盜版綁定 MAC/IP/用戶帳號,非前端獲取

結論

**網頁無法可靠獲取硬碟序列號**。若為內部系統,建議打包 Electron/HTA 或要求用戶安裝代理程式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved