Monday, February 21, 2011

Determine highest .NET Framework version

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.

From stackoverflow
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP

    Is that what you're looking for?

    Charles : 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.
  • 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.

  • 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
    
    James Curran : The CLR version is not necessarily the same as the .Net version. .Net v2.0 updated the CLR over v1.1, but .Net v3.0 & v3.5 did not change the CLR, so it remains "V2.0.50727"
  • 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.

    Daniel Daranas : Unfortunately, no article can be found in your first link.
    Scott Dorman : @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.

0 comments:

Post a Comment