如何在Linux上的.net Core中获取系统规格

时间:2019-04-04 18:52:30

标签: c# linux .net-core debian

我尝试获取Linux上的系统信息。我当前的实现适用于Windows,但不适用于Linux。以我为例,我在.NET CORE 2.2中使用最小的debian 9.8。 有关的重要信息:处理器,硬盘,内存。 令人毛骨悚然的是,在Linux debian 9上它告诉我OSPlatform是Windows。我希望有人能给我一些想法。

我为使用kernel32.dll的Windows编写了一个小库。我们无法在linux上使用kernel32.dll,因此我需要另一种实现方式来让linux接收信息(处理器,硬盘,内存)。

1 个答案:

答案 0 :(得分:0)

我相信this issue已在.Net核心GitHub存储库中打开。 因此,我相信没有.Net核心API可以帮助您实现这一目标。

我可以想到一种解决方法。 您可以选择从C#代码运行bash命令,如下所示(reference):

public static class ShellHelper
{
    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;
    }
}

然后,您可以运行bash命令以获取HTML格式(reference)的输出:

var output = "sudo lshw -html > hardwareinfo.html".Bash();

lshw将在指定路径下创建HTML文件。您可以选择以某种方式解析该信息以获取信息。

希望这对您有用。