System.Management、管理对象搜索器和 RAM

System.Management, Management Object Searcher, and RAM

我是编码的新手,我正在尝试制作一个简单的应用程序,像您一样在多行文本框中显示计算机信息。

因此,我设法通过在注册表中搜索 os 名称、版本等并使用 system.environment 获取当前登录用户、体系结构等来获取基础知识,我使用 ManagementObjectSearcher 来获取我的 cpu 和我的总内存的名称。

我的问题是我安装了 4 个记忆棒,所以虽然应用程序通过返回每个记忆棒的总大小在技术上满足了我的要求,但实际上我只想要一个 16GB 的实例而不是 4 个 4GB 的实例.这是我用的:

ManagementObjectSearcher search = new ManagementObjectSearcher("Select * From Win32_PhysicalMemory");

foreach (ManagementObject ram in search.Get())
            {
                txtSystemInfo.Text += "\r\nRAM: " + Convert.ToDouble(ram.GetPropertyValue("Capacity")) / 1073741824 + "GB";
        }

输出基本上是这样的:

Username: xxxx
OS: Windows x.x (arch)
Version: x.x Build xxxx
CPU: Intel blah blah
RAM: 4GB
RAM: 4GB
RAM: 4GB
RAM: 4GB

显然,我刚刚跳入了深渊,这可能就是为什么我无法点击它的原因,因此非常感谢您的帮助。

简单地在循环中增加一个总数,然后格式化并显示;

UInt64 total = 0;
foreach (ManagementObject ram in search.Get())
{
    total += (UInt64)ram.GetPropertyValue("Capacity");
}

txtSystemInfo.Text += "\r\nRAM: " + total / 1073741824 + "GB";