当前位置:编程学习 > C#/ASP.NET >>

求助(如何读取本机的物理内存并将大小写到服务器的ini文件中)

如何读取本机的物理内存的大小,并将这个他写到远程服务器的ini文件或数据库中呢.
--------------------编程问答-------------------- 到远程服务器的ini,有点难度,如果是数据库,可能性咬高点

用WMI --------------------编程问答-------------------- 使用:GlobalMemoryStatus API取物理内存大小及状态:
================
[DllImport("kernel32")]
public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo);


//定义内存的信息结构
[StructLayout(LayoutKind.Sequential)]
public struct MEMORY_INFO
{
        public uint dwLength;
        public uint dwMemoryLoad;
        public uint dwTotalPhys;
        public uint dwAvailPhys;
        public uint dwTotalPageFile;
        public uint dwAvailPageFile;
        public uint dwTotalVirtual;
        public uint dwAvailVirtual;
    }

================

实现代码:
    /// <summary>
    /// 物理内存大小
    /// </summary>
    public string PhysTotal
    {
        get
        {
            MEMORY_INFO memo = new MEMORY_INFO();
            GlobalMemoryStatus(ref memo);
            return (memo.dwTotalPhys / 1024 / 1024).ToString() + "MB";
        }
    }

    /// <summary>
    /// 可使用的物理内存
    /// </summary>
    public string PhysAvail
    {
        get
        {
            MEMORY_INFO mo = new MEMORY_INFO();
            GlobalMemoryStatus(ref mo);
            return (mo.dwAvailPhys / 1024 / 1024).ToString() + "MB";
        }
    }


对于写入远程服务器的数据库,这个使用数据写入的方法即可。写入远程服务器的INI文件,可以试着通过调用远程服务器的WMI来试着实现。没有做过:-) --------------------编程问答-------------------- 2楼详细,谢谢。不过,为什么不是1个GB的是1022或1023啊。
奇怪。
远程的问题已经解决。用udpclient..发给服务器。然后服务器监控指定端口。
比wmi要简单啦。不过,我在取得本机ip地址的时候。程序运行的很慢,不知道怎么解决。。。
--------------------编程问答-------------------- MemoryState ms = new MemoryState();
MemoryState.MEMORYSTATUS mem = new MemoryState.MEMORYSTATUS();
MemoryState.GlobalMemoryStatus(ref mem);
int all = mem.dwTotalPhys /1024/1024;


我是这样写的可是:Console.WriteLine(all);
时,all的值总是1022为什么啊。。。。 --------------------编程问答-------------------- 4楼的问题没人测试下啊。。。我怎么弄都是1023啊。。。 --------------------编程问答-------------------- 这个可能是系统读取的准确精度没有那么高或者内存条不可能说有1G就那么准确可能有点偏差。
我的是1023.45 --------------------编程问答-------------------- 我的一批都是1023 没办法,我加1再说。。 --------------------编程问答--------------------
引用 2 楼 cocosoft 的回复:
使用:GlobalMemoryStatus API取物理内存大小及状态:
================

C# code

[DllImport("kernel32")]
public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo);


C# code


//定义内存的信息结构
[Str……

为什么用这种方式在有4个G的服务器上读出来还是只有2G的样子呢?服务器是windows 2003版本的
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,