【JS】在 Node.js 和 Electron 中获取设备 UUID 的最佳实践

在现代应用开发中,识别设备的唯一性是一个常见需求。无论是为了授权、数据跟踪还是用户设备管理,获取设备 UUID 都是实现这些目标的关键。在这篇博客中,我们将探讨如何在 Node.js 和 Electron 中获取设备的 UUID,并比较两种主要方法的异同。

什么是设备 UUID?

UUID(Universally Unique Identifier)是一个标准的识别符,用于唯一标识一台设备。对于 Windows 系统,UUID 通常由主板制造商在出厂时设定,可以通过一些命令行工具来获取。

获取 UUID 的两种主要方法

在 Node.js 和 Electron 中,有两种常见方法可以获取设备 UUID:

  1. 使用 wmic 命令
  2. 使用 node-machine-id
方法一:使用 wmic 命令

通过在命令行中使用 wmic csproduct get uuid,我们可以直接从系统硬件中获取 UUID。这种方法确保我们得到的是硬件层面的唯一标识符,通常用于设备的确切识别。

代码示例:

javascript 复制代码
const { exec } = require('child_process');

function getUUID() {
    return new Promise((resolve, reject) => {
        exec('wmic csproduct get uuid', (error, stdout, stderr) => {
            if (error) {
                reject(`Error: ${error.message}`);
            } else if (stderr) {
                reject(`Error: ${stderr}`);
            } else {
                const uuid = stdout.split('\n')[1].trim();
                resolve(uuid);
            }
        });
    });
}

getUUID()
    .then(uuid => {
        console.log('UUID:', uuid);
    })
    .catch(err => {
        console.error(err);
    });
方法二:使用 node-machine-id

node-machine-id 是一个跨平台的库,可以生成设备的唯一 ID,适用于 Windows、macOS 和 Linux。这个 ID 是基于操作系统的,不一定与硬件 UUID 相同。

安装库:

bash 复制代码
npm install node-machine-id

代码示例:

javascript 复制代码
const { machineId, machineIdSync } = require('node-machine-id');

// 异步获取
machineId()
    .then(id => {
        console.log('Machine ID:', id);
    })
    .catch(err => {
        console.error(err);
    });

// 同步获取
const id = machineIdSync();
console.log('Machine ID (Sync):', id);
结果比较
  • wmic csproduct get uuid:直接获取硬件 UUID,适合需要硬件层面唯一标识的应用。
  • node-machine-id:生成的机器 ID 更加灵活,适合在不同操作系统中使用,但可能与硬件 UUID 不同。
结论

在选择获取设备 UUID 的方法时,需根据具体需求进行评估。如果你需要一个硬件层面的唯一标识,推荐使用 wmic 命令。如果你希望在多个平台上获得一致的标识符,node-machine-id 是一个不错的选择。

相关推荐
ᖰ・◡・ᖳ4 小时前
JavaScript:PC端特效--缓动动画
开发语言·前端·javascript·css·学习·html5
c_zyer6 小时前
使用 nvm 管理 Node.js 和 npm 版本
前端·npm·node.js
布Coder6 小时前
前端 vue + element-ui 框架从 0 - 1 搭建
前端·javascript·vue.js
小刘不知道叫啥8 小时前
简单说一下 Webpack分包
前端·javascript·webpack·node.js
Dontla8 小时前
《黑马前端ajax+node.js+webpack+git教程》(笔记)——node.js教程+webpack教程(nodejs教程)
前端·ajax·node.js
MessiGo8 小时前
Javascript 编程基础(2)基础知识 | 2.1、javascript与Node.js
开发语言·javascript·node.js
前端达人9 小时前
React 播客专栏 Vol.13|样式不难搞,Tailwind CSS 与 SVG 实战入门
前端·javascript·css·react.js·前端框架
xcs194059 小时前
开发 前端搭建npm v11.4.0 is known not to run on Node.js v14.18.1.
前端·npm·node.js
W.Y.B.G10 小时前
vue3 vite 项目中自动导入图片
前端·javascript·vue.js
阳光开朗大男孩 = ̄ω ̄=10 小时前
【Vue篇】潮汐中的生命周期观测站
前端·javascript·vue.js