I like the memory scanner you can get from crucial (http://www.crucial.com/systemscanner/index.aspx) however it only works with an online computer.
I would like to be able to do as much as possible of what it does, but off-line.
I would like to produce sufficient info to be able to take this info to another online computer and use that to order a memory upgrade.
I would like to program this making minimum assumptions about what is on the target computer.
My language of choice would be C++.
(C# is my current favorite language but using this would require the .Net environment which is an assumption too far for my liking.)