获取系统唯一标识信息 
1. 什么是系统 UUID 
系统 UUID(Universally Unique Identifier,通用唯一识别码)是硬件厂商在制造主板时写入 BIOS/UEFI 中的唯一标识符,用于唯一标识一台计算机设备。
UUID 的特点:
- 全局唯一性:每台设备的 UUID 都是唯一的
- 持久性:存储在硬件中,重装系统不会改变
- 应用场景:软件授权、设备管理、资产追踪
2. Windows 系统 
2.1 使用 WMIC 命令 
bash
wmic csproduct get uuid输出示例:
text
UUID
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX2.2 使用 PowerShell 
powershell
Get-WmiObject -Class Win32_ComputerSystemProduct | Select-Object -ExpandProperty UUID2.3 使用注册表 
UUID 也存储在注册表中,可以通过以下路径查看:
text
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MachineGuid使用命令查询:
bash
reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography /v MachineGuid3. Linux 系统 
3.1 使用 dmidecode 命令 
需要 root 权限:
bash
sudo dmidecode -s system-uuid输出示例:
text
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX3.2 读取 sysfs 文件系统 
bash
sudo cat /sys/class/dmi/id/product_uuid或者:
bash
sudo cat /sys/devices/virtual/dmi/id/product_uuid3.3 使用 lshw 命令 
bash
sudo lshw -class system | grep uuid4. macOS 系统 
4.1 使用 system_profiler 
bash
system_profiler SPHardwareDataType | grep "Hardware UUID"4.2 使用 ioreg 
bash
ioreg -rd1 -c IOPlatformExpertDevice | grep IOPlatformUUID输出示例:
text
"IOPlatformUUID" = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"5. 跨平台解决方案 
5.1 Python 实现 
python
import platform
import subprocess
import uuid
def get_system_uuid():
    """获取系统 UUID"""
    system = platform.system()
    
    if system == "Windows":
        # Windows 系统
        result = subprocess.check_output(
            'wmic csproduct get uuid', 
            shell=True
        ).decode()
        uuid_str = result.split('\n')[1].strip()
        return uuid_str
    
    elif system == "Linux":
        # Linux 系统
        try:
            with open('/sys/class/dmi/id/product_uuid', 'r') as f:
                return f.read().strip()
        except PermissionError:
            # 需要 sudo 权限
            result = subprocess.check_output(
                ['sudo', 'dmidecode', '-s', 'system-uuid']
            ).decode()
            return result.strip()
    
    elif system == "Darwin":
        # macOS 系统
        result = subprocess.check_output(
            ['system_profiler', 'SPHardwareDataType']
        ).decode()
        for line in result.split('\n'):
            if 'Hardware UUID' in line:
                return line.split(':')[1].strip()
    
    else:
        # 使用 uuid 库生成(不是真正的硬件 UUID)
        return str(uuid.uuid4())
if __name__ == "__main__":
    system_uuid = get_system_uuid()
    print(f"系统 UUID: {system_uuid}")5.2 Node.js 实现 
javascript
const { execSync } = require('child_process')
const os = require('os')
function getSystemUUID() {
  const platform = os.platform()
  
  try {
    if (platform === 'win32') {
      // Windows
      const output = execSync('wmic csproduct get uuid', { encoding: 'utf8' })
      return output.split('\n')[1].trim()
    } else if (platform === 'linux') {
      // Linux
      try {
        const output = execSync('cat /sys/class/dmi/id/product_uuid', { encoding: 'utf8' })
        return output.trim()
      } catch (error) {
        // 需要 sudo 权限
        const output = execSync('sudo dmidecode -s system-uuid', { encoding: 'utf8' })
        return output.trim()
      }
    } else if (platform === 'darwin') {
      // macOS
      const output = execSync('system_profiler SPHardwareDataType', { encoding: 'utf8' })
      const match = output.match(/Hardware UUID: (.+)/)
      return match ? match[1].trim() : null
    }
  } catch (error) {
    console.error('获取 UUID 失败:', error.message)
    return null
  }
}
console.log('系统 UUID:', getSystemUUID())6. 注意事项 
6.1 权限要求 
- Linux/macOS:大多数情况下需要 root/sudo 权限才能读取硬件 UUID
- Windows:普通用户权限即可
6.2 虚拟机环境 
在虚拟机中,UUID 可能由虚拟化软件生成:
- VMware 会为每个虚拟机分配唯一的 UUID
- VirtualBox 也会生成虚拟机 UUID
- Docker 容器继承宿主机的 UUID
6.3 UUID 的局限性 
- 可修改性:技术上 UUID 可以被修改(需要特殊工具)
- 隐私问题:UUID 可能被用于追踪设备
- 克隆影响:磁盘克隆可能导致多台设备具有相同 UUID
6.4 替代方案 
如果无法获取硬件 UUID,可以考虑:
- MAC 地址:网卡物理地址
- 硬盘序列号:存储设备序列号
- CPU 序列号:处理器序列号
- 组合标识:多个硬件信息的组合哈希
7. 应用场景 
7.1 软件授权 
python
import hashlib
def generate_license_key(uuid, product_key):
    """基于 UUID 生成软件许可证"""
    data = f"{uuid}-{product_key}"
    return hashlib.sha256(data.encode()).hexdigest()
def validate_license(uuid, license_key, product_key):
    """验证许可证"""
    expected_key = generate_license_key(uuid, product_key)
    return license_key == expected_key7.2 设备追踪 
python
import requests
import json
def report_device_info(uuid):
    """上报设备信息到服务器"""
    data = {
        'uuid': uuid,
        'hostname': platform.node(),
        'os': platform.system(),
        'version': platform.version()
    }
    
    response = requests.post(
        'https://api.example.com/devices',
        json=data
    )
    return response.json()7.3 资产管理 
在企业环境中,IT 管理员可以使用 UUID 来:
- 追踪公司设备
- 管理软件安装
- 监控设备状态
- 执行远程操作
8. 参考资料 
- https://en.wikipedia.org/wiki/Universally_unique_identifier - UUID 维基百科
- https://docs.microsoft.com/en-us/windows/win32/wmisdk/ - Windows WMI 文档
- https://linux.die.net/man/8/dmidecode - dmidecode 手册
- https://support.apple.com/en-us/HT201375 - macOS 系统信息