p /调用方式 EDIT :更改为GlobalMemoryStatusEx以提供准确的结果(heh)
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] private class MEMORYSTATUSEX { public uint dwLength; public uint dwMemoryLoad; public ulong ullTotalPhys; public ulong ullAvailPhys; public ulong ullTotalPageFile; public ulong ullAvailPageFile; public ulong ullTotalVirtual; public ulong ullAvailVirtual; public ulong ullAvailExtendedVirtual; public MEMORYSTATUSEX() { this.dwLength = (uint)Marshal.SizeOf(typeof(NativeMethods.MEMORYSTATUSEX)); } } [return: MarshalAs(UnmanagedType.Bool)] [Dllimport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern bool GlobalMemoryStatusEx([In, Out] MEMORYSTATUSEX lpBuffer);然后使用像:
ulong installedMemory;MEMORYSTATUSEX memStatus = new MEMORYSTATUSEX();if( GlobalMemoryStatusEx( memStatus)){ installedMemory = memStatus.ullTotalPhys;}或者,您可以使用WMI(受管但速度较慢)在“ Win32_ComputerSystem”类中查询“ TotalPhysicalMemory”。
*根据joel-llamaduck.blogspot.com的注释 *编辑 固定代码



