如何在Linux下的Mono中获取主板和处理器唯一标识符?

时间:2009-09-15 07:39:54

标签: c# linux mono

如何在Linux下的Mono中获取主板和处理器唯一标识符?

注意:.Net命名空间System.Management在Mono中没有对应的

2 个答案:

答案 0 :(得分:1)

我看到两种可能的方式:

  • 使用ProcessStartInfo.RedirectStandardInput(和输出/错误)解析输出,启动代码中的uname / motherboard信息控制台程序
  • 使用DllImport指令访问正确的C函数(如果uname -a不够好)。请记住相应地设置LD_LIBRARY_PATH,以便找到共享库。

答案 1 :(得分:1)

命令行的典型方法是使用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序列号几乎全为零。