本文目录导读:

- Windows 系统 (批处理/BAT脚本)
- PowerShell 脚本 (更强大)
- VBScript 脚本
- Python 脚本 (跨平台)
- Linux/Unix 脚本
- 推荐的完整方案 (PowerShell)
- 注意事项
我来介绍几种获取电脑唯一标识的方法,根据不同的需求和平台选择合适的方式:
Windows 系统 (批处理/BAT脚本)
使用 WMIC 获取硬件信息
@echo off echo ===== 计算机标识信息 ===== echo. echo 主板序列号: wmic baseboard get serialnumber echo. echo CPU序列号: wmic cpu get processorid echo. echo 硬盘序列号: wmic diskdrive get serialnumber echo. echo MAC地址: getmac /fo csv echo. echo 计算机GUID: reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography /v MachineGuid pause
生成唯一标识(推荐方法)
@echo off
set "COMPUTER_INFO=%COMPUTERNAME%-%USERNAME%"
:: 获取主板序列号
for /f "skip=1 tokens=2 delims==" %%i in ('wmic baseboard get serialnumber /value') do set "MB_SN=%%i"
:: 获取硬盘序列号
for /f "skip=1 tokens=2 delims==" %%i in ('wmic diskdrive get serialnumber /value') do set "DISK_SN=%%i"
:: 生成唯一标识
echo 计算机名: %COMPUTERNAME%
echo 用户: %USERNAME%
echo 主板序列号: %MB_SN%
echo 硬盘序列号: %DISK_SN%
echo.
echo 唯一标识: %COMPUTERNAME%-%MB_SN%-%DISK_SN%
pause
PowerShell 脚本 (更强大)
# 获取系统信息并生成唯一标识
function Get-MachineGUID {
# 方法1: 获取MachineGUID
$machineGUID = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Cryptography").MachineGuid
# 方法2: 获取BIOS信息
$biosInfo = Get-WmiObject -Class Win32_BIOS
$biosSerial = $biosInfo.SerialNumber
# 方法3: 获取硬盘信息
$diskInfo = Get-WmiObject Win32_DiskDrive | Select-Object -First 1
$diskSerial = $diskInfo.SerialNumber
# 生成组合标识
$uniqueID = $machineGUID + "-" + $biosSerial + "-" + $diskSerial
Write-Host "机器GUID: $machineGUID" -ForegroundColor Green
Write-Host "BIOS序列号: $biosSerial" -ForegroundColor Green
Write-Host "硬盘序列号: $diskSerial" -ForegroundColor Green
Write-Host "组合唯一标识: $uniqueID" -ForegroundColor Yellow
return $uniqueID
}
# 获取IP和MAC地址
function Get-NetworkInfo {
$networkAdapter = Get-NetAdapter | Where-Object {$_.Status -eq "Up"} | Select-Object -First 1
$ipConfig = Get-NetIPAddress -InterfaceIndex $networkAdapter.ifIndex -AddressFamily IPv4
Write-Host "IP地址: $($ipConfig.IPAddress)"
Write-Host "MAC地址: $($networkAdapter.MacAddress)"
}
# 执行
Get-MachineGUID
Get-NetworkInfo
VBScript 脚本
' 获取计算机唯一标识
Option Explicit
Dim objWMIService, objItem, colItems
Dim ComputerName, CPUID, MBID, MACID
ComputerName = "Computer: " & CreateObject("WScript.Network").ComputerName
' 获取CPU
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor",,48)
For Each objItem in colItems
CPUID = "CPU ID: " & objItem.ProcessorId
Next
' 获取主板
Set colItems = objWMIService.ExecQuery("Select * from Win32_BaseBoard",,48)
For Each objItem in colItems
MBID = "Motherboard SN: " & objItem.SerialNumber
Next
' 获取MAC地址
Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled = True",,48)
For Each objItem in colItems
If Not IsNull(objItem.MACAddress) Then
MACID = "MAC: " & objItem.MACAddress
Exit For
End If
Next
WScript.Echo ComputerName
WScript.Echo CPUID
WScript.Echo MBID
WScript.Echo MACID
Python 脚本 (跨平台)
import platform
import uuid
import subprocess
import hashlib
import socket
def get_machine_id():
"""获取系统唯一标识"""
info = {}
# 1. 获取系统信息
info['system'] = platform.system()
info['node'] = platform.node()
info['release'] = platform.release()
# 2. 获取硬件信息
try:
# Linux/macOS
if platform.system() == "Linux":
result = subprocess.run(['cat', '/etc/machine-id'], capture_output=True)
info['machine_id'] = result.stdout.decode().strip()
elif platform.system() == "Darwin":
result = subprocess.run(['ioreg', '-rd1', '-c', 'IOPlatformExpertDevice'], capture_output=True)
info['machine_id'] = result.stdout.decode().strip()
elif platform.system() == "Windows":
result = subprocess.run(['wmic', 'csproduct', 'get', 'uuid'], capture_output=True)
info['machine_id'] = result.stdout.decode().strip().split('\n')[1].strip()
except:
info['machine_id'] = str(uuid.getnode())
# 3. MAC地址
info['mac_address'] = ':'.join(['{:02x}'.format((uuid.getnode() >> elements) & 0xff)
for elements in range(0,2*6,2)][::-1])
# 4. 生成唯一标识(哈希处理)
unique_string = f"{info['machine_id']}-{info['mac_address']}-{info['node']}"
info['unique_id'] = hashlib.md5(unique_string.encode()).hexdigest()
return info
# 执行示例
if __name__ == "__main__":
info = get_machine_id()
print("="*40)
print("系统: ", info['system'])
print("计算机名: ", info['node'])
print("系统版本: ", info['release'])
print("机器ID: ", info['machine_id'])
print("MAC地址: ", info['mac_address'])
print("唯一标识: ", info['unique_id'])
print("="*40)
Linux/Unix 脚本
#!/bin/bash # 获取 Linux 系统唯一标识 echo "===== 系统唯一标识 =====" echo # 方法1: 使用 /etc/machine-id echo "Machine ID: $(cat /etc/machine-id)" # 方法2: 使用 dmidecode 获取硬件信息 echo "主板序列号: $(sudo dmidecode -s baseboard-serial-number)" echo "系统序列号: $(sudo dmidecode -s system-serial-number)" # 方法3: 组合生成唯一标识 CPU_INFO=$(cat /proc/cpuinfo | grep 'model name' | uniq) DISK_SN=$(lsblk -no serial /dev/sda) MACHINE_ID=$(cat /etc/machine-id) FINGERPRINT=$(echo "$MACHINE_ID-$DISK_SN" | md5sum | cut -d' ' -f1) echo "CPU信息: $CPU_INFO" echo "硬盘序列号: $DISK_SN" echo "唯一指纹: $FINGERPRINT"
推荐的完整方案 (PowerShell)
# 生成稳定的机器指纹
function Get-HardwareFingerprint {
$fingerprint = @()
# 收集基础信息
$fingerprint += $env:COMPUTERNAME
$fingerprint += (Get-WmiObject Win32_BIOS).SerialNumber
$fingerprint += (Get-WmiObject Win32_BaseBoard).SerialNumber
$fingerprint += (Get-WmiObject Win32_Processor).ProcessorId
# 获取第一个物理硬盘序列号
$disk = Get-WmiObject Win32_DiskDrive | Where-Object {$_.InterfaceType -ne "USB"} | Select-Object -First 1
$fingerprint += $disk.SerialNumber
# 生成哈希值作为唯一标识
$hashString = $fingerprint -join "-"
$sha256 = [System.Security.Cryptography.SHA256]::Create()
$bytes = [System.Text.Encoding]::UTF8.GetBytes($hashString)
$hash = $sha256.ComputeHash($bytes)
return [Convert]::ToHexString($hash)
}
Write-Host "本机唯一标识: $(Get-HardwareFingerprint)" -ForegroundColor Cyan
注意事项
- WMI可能需要管理员权限 - 某些信息只能在管理员模式下获取
- 虚拟机会有不同标识 - VM中获取的唯一标识可能与物理机不同
- 硬件更换 - 如果更换硬件,标识可能会变化
- 隐私考虑 - 唯一标识可能包含敏感信息,请注意数据保护
建议使用多种硬件信息的组合(如CPU+主板+硬盘序列号)生成唯一标识,这样既相对稳定又不容易被伪造。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播