2011-12-11 3 views
10

Eventuali duplicati:
C# - How do you get total amount of RAM the computer has?Recupero quantità totale di RAM su un computer

Il seguente sarebbe recuperare la quantità di RAM disponibile:

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

Naturalmente ci sarà utilizzare System.Diagnostics; classe.

Does performancecounter dispone di funzionalità per recuperare la quantità di RAM di un determinato computer? Non sto parlando della quantità di ram usata o inutilizzata. Sto parlando della quantità di ram della macchina.

+0

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

+0

Questa avere è stato risposto qui: http://stackoverflow.com/questions/105031/c-sharp-how-do-you-get-total-amount-of-ram-the-computer-has – Softnux

+0

Sì, ma non utilizzando il contatore di prestazioni. Sto provando ad affrontare questo dal contatore delle prestazioni direttamente e non tramite Visual Basic DLL. –

risposta

14

Queste informazioni sono già disponibili direttamente nel framework .NET, si potrebbe anche usarlo. Progetto + Aggiungi riferimento, selezionare 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(); 
    } 
} 

E no, non trasforma il codice C# in vb.net.

+0

Grazie, questo funziona abbastanza bene per me. –

+0

Potresti consigliarmi come impostare il mio argomento come risposto/completato? –

+2

La domanda richiede quantità di RAM su una macchina, quindi questo dovrebbe essere 'nuovo Microsoft.VisualBasic.Devices.ComputerInfo(). TotalPhysicalMemory' anziché AvailablePhysicalMemory che visualizza la quantità di byte attualmente allocati. – zgerd

2

si può provare in questo modo

Aggiungere un riferimento al 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

Per qualche motivo questo è il recupero del valore sbagliato, supponiamo di essere 3,34 g, sta recuperando 4 GB. Ho del codice per farlo e lo usavo in un'applicazione di mine sul mio portatile per 6 anni e funzionava bene. Aggiungo un po 'di RAM al mio computer e all'improvviso non funziona più. Grazie comunque. –

+5

Non si sta recuperando la memoria attualmente installata, si sta recuperando la massima quantità di memoria supportata che può essere installata sulla scheda madre. – wonko79