Все ответы здесь, включая принятый, дадут вам общий объем оперативной памяти, доступной для использования. И, возможно, это было то, что хотел OP.
Но если вас интересует объем установленной оперативной памяти, вам нужно вызвать функцию GetPhysicallyInstalledSystemMemory .
По ссылке в разделе "Примечания":
Функция GetPhysicallyInstalledSystemMemory извлекает объем физически установленной оперативной памяти из таблиц микропрограмм SMBIOS компьютера. Это может отличаться от суммы, сообщаемой функцией GlobalMemoryStatusEx , которая устанавливает член ullTotalPhys структуры MEMORYSTATUSEX равным объему физической памяти, доступной для использования операционной системой. Объем памяти, доступный для операционной системы, может быть меньше объема памяти, физически установленной в компьютере, поскольку BIOS и некоторые драйверы могут зарезервировать память в качестве областей ввода-вывода для устройств с отображением памяти, что делает память недоступной для операционной системы. и приложения.
Образец кода:
[DllImport("kernel32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetPhysicallyInstalledSystemMemory(out long TotalMemoryInKilobytes);
static void Main()
{
long memKb;
GetPhysicallyInstalledSystemMemory(out memKb);
Console.WriteLine((memKb / 1024 / 1024) + " GB of RAM installed.");
}