ActiveXObject("WbemScripting.SWbemLocator") **僅在 IE/舊版 Edge (非 Chromium) 支援**,需:
**現代瀏覽器 (Chrome/Firefox/Edge 79+) 完全不支援**,無法通用。
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 或要求用戶安裝代理程式。