2011-12-11 11 views
10

Duplicar posible:
C# - How do you get total amount of RAM the computer has?Recuperando cantidad total de memoria RAM en un ordenador

El siguiente sería recuperar la cantidad de RAM disponible:

PerformanceCounter ramCounter; 
ramCounter = new PerformanceCounter("Memory", "Available MBytes"); 
Console.WriteLine("Total RAM: " + ramCounter.NextValue().ToString() + " MB\n\n"); 

supuesto que lo haremos tiene que usar System.Diagnostics; clase.

¿Tiene Performancecounter alguna funcionalidad para recuperar la cantidad de RAM de una máquina en particular? No estoy hablando de la cantidad de ram utilizado o no. Estoy hablando de la cantidad de ram que tiene la máquina.

+0

Compruebe [esto] [1]. [1]: http://stackoverflow.com/questions/105031/c-sharp-how-do-you-get-total-amount-of-ram-the-computer-has – Shai

+0

Este tener ha sido respondida aquí: http://stackoverflow.com/questions/105031/c-sharp-how-do-you-get-total-amount-of-ram-the-computer-has – Softnux

+0

Sí, pero no utilizando el clase de contador de rendimiento. Estoy tratando de abordar esto desde la clase de contador de rendimiento directamente y no a través de DLL básica visual. –

Respuesta

14

Esta información ya está disponible directamente en .NET framework, es mejor que la utilice. Proyecto + Agregar referencia, seleccione Microsoft.VisualBasic.

using System; 

class Program { 
    static void Main(string[] args) { 
     Console.WriteLine("You have {0} bytes of RAM", 
      new Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMemory); 
     Console.ReadLine(); 
    } 
} 

Y no, no convierte su código C# en vb.net.

+0

Gracias, esto está funcionando bastante bien para mí. –

+0

¿Podría aconsejarme sobre cómo configurar mi tema como respondido/completado? –

+2

La pregunta requiere cantidad de RAM en una máquina, por lo que debería ser 'new Microsoft.VisualBasic.Devices.ComputerInfo(). TotalPhysicalMemory' en lugar de AvailablePhysicalMemory, que muestra la cantidad de bytes actualmente asignados. – zgerd

2

se puede tratar como esto

agregar una referencia a System.Management.

private static void DisplayTotalRam() 
{ 
    string Query = "SELECT MaxCapacity FROM Win32_PhysicalMemoryArray"; 
    ManagementObjectSearcher searcher = new ManagementObjectSearcher(Query); 
    foreach (ManagementObject WniPART in searcher.Get()) 
    { 
    UInt32 SizeinKB = Convert.ToUInt32(WniPART.Properties["MaxCapacity"].Value); 
    UInt32 SizeinMB = SizeinKB/1024; 
    UInt32 SizeinGB = SizeinMB/1024; 
    Console.WriteLine("Size in KB: {0}, Size in MB: {1}, Size in GB: {2}", SizeinKB, SizeinMB, SizeinGB); 
    } 
} 
+0

Por alguna razón esto está recuperando el valor incorrecto, supongamos que es 3.34 g, está recuperando 4 gb. Tengo un código para hacer esto y lo estaba usando en una aplicación de minas en mi computadora portátil durante 6 años y funcionaba bien. Agregué un poco más de RAM a mi computadora y de repente no funcionó de nuevo. Gracias de cualquier manera. –

+5

Esto no está recuperando la memoria actualmente instalada, es decir, está recuperando la cantidad máxima admitida de memoria que se puede instalar en la placa base. – wonko79

Cuestiones relacionadas