2011-12-11 25 views
10

可能重複:
C# - How do you get total amount of RAM the computer has?檢索的RAM總量的計算機上

下將檢索多少RAM,可用:

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

我們當然會必須使用System.Diagnostics;類。

性能計數器是否有任何功能來檢索特定機器的RAM數量?我不是在談論使用或未使用的RAM的數量。我正在談論機器的內存量。

+0

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

+0

這有被回答在這裏:http://stackoverflow.com/questions/105031/c-sharp-how-do-you-get-total-amount-of-ram-the-computer-has – Softnux

+0

是的,但沒有通過使用表現櫃檯類。我試圖從性能計數器類直接解決這個問題,而不是通過visual basic DLL。 –

回答

14

該信息已經可以直接在.NET框架中使用,您可以使用它。 Project +添加引用,選擇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(); 
    } 
} 

不,它不會將您的C#代碼轉換爲vb.net。

+0

謝謝,這對我來說工作得很好。 –

+0

你能否告訴我如何將我的主題設置爲回答/完成? –

+2

問題要求在機器上的RAM數量,所以這應該是'new Microsoft.VisualBasic.Devices.ComputerInfo()。TotalPhysicalMemory'而不是AvailablePhysicalMemory,它顯示當前分配的字節數量。 – zgerd

2

你可以嘗試這樣的

添加一個參考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

由於某些原因,這是檢索錯誤的值,假設爲3.34克,它檢索4 GB。我有一些代碼可以做到這一點,並使用它在我的筆記本電腦上的地雷應用6年,並且工作正常。給我的電腦增加了更多內存,並且突然不再工作。不管怎麼說,還是要謝謝你。 –

+5

這不是檢索當前安裝的內存,這是檢索可以安裝到主板的最大支持的內存量。 – wonko79