Todas las respuestas aquí, incluida la aceptada, le darán la cantidad total de RAM disponible para su uso. Y eso puede haber sido lo que OP quería.
Pero si está interesado en obtener la cantidad de RAM instalada , entonces querrá hacer una llamada a la función GetPhysicallyInstalledSystemMemory .
Desde el enlace, en la sección Comentarios:
La función GetPhysicallyInstalledSystemMemory recupera la cantidad de RAM físicamente instalada de las tablas de firmware SMBIOS de la computadora. Esto puede diferir de la cantidad informada por la función GlobalMemoryStatusEx , que establece el miembro ullTotalPhys de la estructura MEMORYSTATUSEX en la cantidad de memoria física que está disponible para que la utilice el sistema operativo. La cantidad de memoria disponible para el sistema operativo puede ser menor que la cantidad de memoria instalada físicamente en la computadora porque el BIOS y algunos controladores pueden reservar memoria como regiones de E / S para dispositivos asignados en memoria, lo que hace que la memoria no esté disponible para el sistema operativo y aplicaciones.
Código de muestra:
[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.");
}