views:

1522

answers:

4

I need to determine the highest .NET framework version installed on a desktop machine from C\C++ code. Looks like I can iterate the folders under %systemroot%\Microsoft.NET\Framework, but that seems kind of error prone. Is there a better way? Perhaps a registry key I can inspect? Thanks.

+6  A: 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP

Is that what you're looking for?

chills42
Yes, HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP should be a little easier. Looks like I'll have to iterate the subkeys and then query the Version value. Thanks.
Charles
+4  A: 

Registry keys for the .Net Framework start like that:

HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\

Depending on the version, the rest of the key will be different (check this page).

You can look how to access the registry in this msdn article: Using the registry in a C++ application.

Luc Touraille
A: 

The following is suppose to give you the answer, but it seems horribly broken :(

c:\Program Files>clrver
Versions installed on the machine:
v2.0.50727
leppie
James Curran
+4  A: 

If you're trying to do this from managed code, take a look at this article, which wraps all of the logic needed to determine if a specific Framework version is installed.

Otherwise, take a look at Aaron's blog post here, which gives a C/C++ method for doing the same thing.

Scott Dorman
Unfortunately, no article can be found in your first link.
Daniel Daranas
@Daniel Daranas: Thanks for letting me know. Code Project moved the article since this was originally answered. I've updated the answer to the correct link.
Scott Dorman