This is a subject I have been looking into for a while.
One of the problems as to why WMI and SMBIOS does not return DDR 3 can be answered by viewing the Specification for your version of SMBIOS here
http://www.dmtf.org/standards/smbios[
^].
In order to see what version you have you can use Win32_Bios and get the following two properties.
SMBIOSMajorVersion and SMBIOSMinorVersion, then on the link above look for the version column and then that is the specs you are under. Without being able to update your bios to a new SMBIOS Version there is not much you can do there. The earlier versions than the most current one did not have DDR3 listed. Without looking into every version I’m not sure when it was added.
Another suggestion I have seen was to use the Class “MSSmBios_RawSMBiosTables” located in "Root\WMI".
Last night I created a quick application to pull all of the information and populate a text box. It is displayed as Decimal format rather than Hex like the program listed here
http://www.codeguru.com/welcomead[
^].
After getting the information I found a way to convert every byte to (Char) without going thru the trouble of detecting the table structure. If you compare the output to Win32_PhysicalMemory what is returned is the same. So if you cannot get it from a normal class then this option appears that it won’t get it either.
So how do you get the information? You can use a tool like PC-Wizard located here
http://www.cpuid.com/softwares/pc-wizard.html[
^]
They have two versions one installs it on a system and the other is in a Zip file so you can throw on a USB stick and take it along with you.
Ok so how do they do it? They use driver to enumerate the system bus and then get the components attached to it. Then enumerate for the properties of the components.
How to do it in VB or C#? I don’t have a clue. But they do have a Dev site for a trial to the API
http://www.cpuid-pro.com/[
^]
I hope that answers why you can’t get it in WMI, but it still does not tell you how to do it In C# or VB.Net.
Best I can tell, you would have to do allot of API calls to the system bus to get it done.