我正在尝试确定计算机中安装的物理内存量。为了实现这一点,我使用WMI(通过.net 4.0),它是服务。问题是无论远程计算机有多少内存,返回的值都是4GB。这已经过测试有三个远程计算机:问题在远程计算机上读取内存量
- 虚拟机,1GB RAM,Windows 2003的
- 物理机,2GB内存,Windows XP中
- 物理机,2GB内存,64位Windows 7
我自己正在运行物理机,4GB内存,Windows 7 64bit。
显示代码:
uint phisicalMemorySize = 0;
ConnectionOptions co = new ConnectionOptions();
co.Username = null;
ManagementScope ms = new ManagementScope("\\\\" + computerName, co);
ObjectQuery q = new ObjectQuery("select TotalPhysicalMemory from Win32_ComputerSystem");
ManagementObjectSearcher os = new ManagementObjectSearcher(ms, q);
ManagementObjectCollection moc = os.Get();
foreach (ManagementObject o in moc)
{
phisicalMemorySize += Convert.ToUInt64(o["TotalPhysicalMemory"], CultureInfo.InvariantCulture);
}
我一直在使用select Capacity from Win32_PhysicalMemory
和select TotalVisibleMemorySize from Win32_OperatingSystem
的查询,但无济于事也试过。在末尾总是4GB。
我相信你对容量错了。它返回**每个棒的容量**([点击](http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/32da73c1-de42-4c74-b59e-4f1e51d2e7a2))当然不会假设在WMI里面改变了。 RAM中的BIOS又有多大? 100 MB?这不应该太偏离我的结果。你用什么类和财产来获得笔记本电脑中提到的3 GB? – AtaSmrk 2011-04-07 07:10:26