zoukankan      html  css  js  c++  java
  • 关于c# 中读取系统内存大小的问题。

      在程序中,调用WMI的时候,出现一个问题,就是我系统有插了两条内存条,共4G。然而自己只能在程序中查到安装内存为2G,感觉有点不淡定。这是之前的代码。

       static ManagementObjectSearcher PhysicalMemory = new ManagementObjectSearcher("select * from Win32_PhysicalMemory");

         // 安装内存
        string hd = strInstalledMemory + String.Format("{0} GB", Convert.ToInt64(GetValue(PhysicalMemory, "Capacity")) / 1024 / 1024 / 1024);

       static object GetValue(ManagementObjectSearcher searcher, string propName)

       {
         foreach (ManagementObject mobj in searcher.Get())
         return mobj[propName];
        throw new NotSupportedException();
        }

     

        这个明显是不完整的,并没有查询到所有的内存,多个内存条的话,就不行了。然后我改进了下:

        //获取安装内存大小

          double capacity = 0;
          string hd = "";
         ManagementClass cimobject1 = new ManagementClass("Win32_PhysicalMemory");
         ManagementObjectCollection moc1 = cimobject1.GetInstances();
        foreach (ManagementObject mo1 in moc1)
        {
                     capacity += ((Math.Round(Int64.Parse(mo1.Properties["Capacity"].Value.ToString()) / 1024 / 1024 / 1024.0, 1)));
              
         }
           moc1.Dispose();
          cimobject1.Dispose();

           hd = "安装内存:"+ capacity + "G";

         这样就搞定了。水平有限,如有更好的方法,求分享。。

      

  • 相关阅读:
    php一些技巧函数
    让apache不区分图片和文件后缀大小写
    ajax的同步和异步问题 (转)
    windows上在linux客户端上传小文件lrzsz
    linux查看时间和修改时间
    mysql常用命令
    yum安装 lnmp
    linux网卡设置详解
    centos最小安装,之后想安装x-windows,安装图形界面 startx
    optimize table table_name myisam mysql自动清除删除过留下的空记录
  • 原文地址:https://www.cnblogs.com/qianchunsheng/p/3584261.html
Copyright © 2011-2022 走看看