Files
AlgerMusicPlayer/src/main/modules/deviceInfo.ts
T

65 lines
1.7 KiB
TypeScript
Raw Normal View History

2025-04-12 23:16:12 +08:00
import { app } from 'electron';
import { machineIdSync } from 'node-machine-id';
import os from 'os';
import { getSharedStore } from './config';
const store = getSharedStore();
2025-04-12 23:16:12 +08:00
/**
* 获取设备唯一标识符
* 优先使用存储的ID,如果没有则获取机器ID并存储
*/
export function getDeviceId(): string {
let deviceId = store.get('deviceId') as string | undefined;
if (!deviceId) {
try {
// 使用node-machine-id获取设备唯一标识
deviceId = machineIdSync(true);
} catch (error) {
console.error('获取机器ID失败:', error);
// 如果获取失败,使用主机名和MAC地址组合作为备选方案
const networkInterfaces = os.networkInterfaces();
let macAddress = '';
// 尝试获取第一个非内部网络接口的MAC地址
Object.values(networkInterfaces).forEach((interfaces) => {
if (interfaces) {
interfaces.forEach((iface) => {
if (!iface.internal && !macAddress && iface.mac !== '00:00:00:00:00:00') {
macAddress = iface.mac;
}
});
}
});
deviceId = `${os.hostname()}-${macAddress}`.replace(/:/g, '');
}
// 存储设备ID
if (deviceId) {
store.set('deviceId', deviceId);
} else {
// 如果所有方法都失败,使用随机ID
deviceId = Math.random().toString(36).substring(2, 15);
store.set('deviceId', deviceId);
}
}
return deviceId;
}
/**
* 获取系统信息
*/
export function getSystemInfo() {
return {
osType: os.type(),
osVersion: os.release(),
osArch: os.arch(),
platform: process.platform,
appVersion: app.getVersion()
};
}