求助(如何读取本机的物理内存并将大小写到服务器的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再说。。 --------------------编程问答--------------------
为什么用这种方式在有4个G的服务器上读出来还是只有2G的样子呢?服务器是windows 2003版本的
补充:.NET技术 , C#