如何获得与linux / windows兼容的硬盘序列号

时间:2019-01-23 10:31:09

标签: c# asp.net-core

是否可以独立于操作系统获取主硬盘序列号? 在Windows中使用WMI或DllImport相当容易,但是我找不到关于linux的任何文档。 另外,有没有办法获得跨平台唯一的机器ID? 附言我不在乎虚拟机克隆

2 个答案:

答案 0 :(得分:2)

在linux终端中,您可以使用以下命令来获取HDD的SERIAL。

udevadm info --query=all --name=/dev/sda | grep ID_SERIAL 

其中/dev/sda通常是主HDD。

您可以使用如下所示的静态函数来调用Bash

public static string Bash(this string cmd)
{
    var escapedArgs = cmd.Replace("\"", "\\\"");

    var process = new Process()
    {
        StartInfo = new ProcessStartInfo
        {
            FileName = "/bin/bash",
            Arguments = $"-c \"{escapedArgs}\"",
            RedirectStandardOutput = true,
            UseShellExecute = false,
            CreateNoWindow = true,
        }
    };
    process.Start();
    string result = process.StandardOutput.ReadToEnd();
    process.WaitForExit();
    return result;
}

然后执行

var output = "udevadm info --query=all --name=/dev/sda | grep ID_SERIAL".Bash();

答案 1 :(得分:1)

尝试一下:

udevadm info --query=all --name=/dev/sda | grep ID_SERIAL

还有其他方法,但是这种方法不需要root权限。