Console.WriteLine("I am going to pull information on your Memory"); System.Management.ObjectQuery mQueryMemory = new ObjectQuery("SELECT * FROM Win32_PhysicalMemory"); ManagementObjectSearcher mSearcherMemory = new ManagementObjectSearcher(mQueryMemory); ManagementObjectCollection mReturnCollectionMemory = mSearcherMemory.Get(); Console.WriteLine("Memory Sticks Installed : " + mReturnCollectionMemory.Count); foreach (ManagementObject mReturnMemory in mReturnCollectionMemory) { Console.WriteLine("FormFactor: " + mReturnMemory["FormFactor"].ToString()); Console.WriteLine("MemoryType: " + mReturnMemory["MemoryType"].ToString()); Console.WriteLine("Memory Speed: " + mReturnMemory["Speed"].ToString()); Console.WriteLine("Capacity: " + double.Parse(mReturnMemory["Capacity"].ToString()) / 1048576); //why "Speed" returns empty?!