【发布时间】:2009-09-15 07:39:53
【问题描述】:
Linux下Mono中如何获取主板和处理器唯一标识?
注意:.Net 命名空间 System.Management 在 Mono 中没有对应项
【问题讨论】:
-
您最好在 Server Fault 上提出这个问题,以获得有关 Linux 上可用选项的答案(不参考 Mono),然后弄清楚如何在 Mono 中访问它。
Linux下Mono中如何获取主板和处理器唯一标识?
注意:.Net 命名空间 System.Management 在 Mono 中没有对应项
【问题讨论】:
命令行的典型方法是使用 dmidecode 或 lshw,它们读取 BIOS DMI 区域并解析序列号。但是,如果您的应用程序不以 root 身份运行,这将不起作用,因为它需要能够读取 /dev/mem。
您可以通过 HAL 获得其中的一些信息。我不完全确定如何直接通过 HAL 执行此操作,但您可以通过 lshal 命令执行此操作。在显示的设备之一下,您应该会看到“system.hardware.serial”和“system.hardware.uuid”条目——它们是主板的序列号和 UUID。
您可以像这样从 Bash 中查询 HAL:
PC=`hal-find-by-property --key info.product --string Computer`
PC_UUID=`hal-get-property --udi $PC --key system.hardware.uuid`
PC_SERIAL=`hal-get-property --udi $PC --key system.hardware.serial`
在旧机器上,这些键可能是“smbios.system.uuid”和“smbios.system.serial”。另外,请注意,此信息可能并不存在于所有机器上,或者完全是假的。我这里至少有一块主板的 UUID 完全由 1 组成,另一块主板的 CPU 序列号几乎完全为零。
【讨论】:
我看到了两种可能的方式:
【讨论】: