【问题标题】:How to obtain motherboard and processor unique identifiers in Mono under Linux?Linux下如何获取Mono中的主板和处理器唯一标识?
【发布时间】:2009-09-15 07:39:53
【问题描述】:

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

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

【问题讨论】:

  • 您最好在 Server Fault 上提出这个问题,以获得有关 Linux 上可用选项的答案(不参考 Mono),然后弄清楚如何在 Mono 中访问它。

标签: c# linux mono


【解决方案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 序列号几乎完全为零。

【讨论】:

    【解决方案2】:

    我看到了两种可能的方式:

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

    【讨论】:

      猜你喜欢
      • 2011-01-27
      • 2019-05-01
      • 1970-01-01
      • 2010-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多