我在C#中使用'ObjectQuery'来获取系统上安装的总RAM。我从'Win32_PhysicalMemory'对象中捕获'容量'。 以下是代码:
double totalCapacity = 0;
ObjectQuery objectQuery = new ObjectQuery("select * from Win32_PhysicalMemory");
ManagementObjectSearcher searcher = new
ManagementObjectSearcher(objectQuery);
ManagementObjectCollection vals = searcher.Get();
foreach (ManagementObject val in vals)
{
totalCapacity += System.Convert.ToDouble(val.GetPropertyValue("Capacity"));
}
double ramCapacity = totalCapacity / 1048576;
return ramCapacity.ToString();
它在大多数系统上运行良好。但是有一些系统的安装RAM为1 GB,但代码被抓取为512 MB。 (编辑:这是1 GB的单个RAM棒)
我还检查了那些系统上'Win32_PhysicalMemory'对象中的'BankLabel'变量。它如下'Bank0 / 1'。 现在据我所知,我猜1 GB的内存已分为两组,每组512 - 512 MB,并且已经切换。
答案 0 :(得分:1)
我不确定你的问题的答案,但我认为我有一个解决你的问题的方法。试试这个:
ObjectQuery objectQuery = new ObjectQuery("select * from Win32_ComputerSystem");
和
val.GetPropertyValue("TotalPhysicalMemory")
这将获得以字节为单位的RAM量。您必须将其转换为获得MiB或GiB。
另一方面,如果您正在尝试确定系统中的RAM而不是系统中有多少RAM,那么请打开一个打开并查看其中是否有多个内存。这将很快回答你的问题。