首页 > 解决方案 > 如何获取已安装的 RAM 和 CPU 详细信息 c# .Net Core?

问题描述

我需要以 GB 为单位的已安装总 RAM 以及 CPU 详细信息。我看到很多与此相关的帖子。但是,我不确定哪个适合我。而且,我也尝试了几个例子,但它没有提供预期的结果。

例如,我需要如下所示,

RAM 大小 = 16 GB

CPU = Intel(R) Core(TM) i5 3.20 GHz 2 核

注意:我不期望可用或已用内存。

更新 :

要获取 RAM 详细信息,我使用了以下代码

string Query = "SELECT MaxCapacity FROM Win32_PhysicalMemoryArray";
        ManagementObjectSearcher searcher123 = new ManagementObjectSearcher(Query);
        foreach (ManagementObject WniPART in searcher123.Get())
        {
            UInt32 SizeinKB = Convert.ToUInt32(WniPART.Properties["MaxCapacity"].Value);
            UInt32 SizeinMB = SizeinKB / 1024;
            UInt32 SizeinGB = SizeinKB / (1024 * 1024);
            Console.WriteLine("Size in KB: {0}, Size in MB: {1}, Size in GB: {2}", SizeinKB, SizeinMB, SizeinGB);
        }

但是,这给了我错误的数据(事实上,它给了 32 GB 而不是 16GB)

并且,要获取 CPU 详细信息

标签: c#.net.net-corecpu

解决方案


看起来你使用了错误的类。尝试Win32_PhysicalMemory类和Capacity属性

var query = "SELECT Capacity FROM Win32_PhysicalMemory";
var searcher = new ManagementObjectSearcher(query);
foreach (var WniPART in searcher.Get())
{
    var capacity = Convert.ToUInt64(WniPART.Properties["Capacity"].Value);
    var capacityKB = capacity / 1024;
    var capacityMB = capacityKB / 1024;
    var capacityGB = capacityMB / 1024;
    System.Console.WriteLine("Size in KB: {0}, Size in MB: {1}, Size in GB: {2}", capacityKB, capacityMB, capacityGB);
}

类中的MaxCapacity属性Win32_PhysicalMemoryArray将为您提供机器上可安装的最大 RAM 量,而不是实际安装的内存量。


推荐阅读