[.Net] Comment trouver les frameworks DotNet installés ?

dotnet microsoft

Aujourd’hui j’ai eu une question tout bête: comment faire pour savoir les versions du framework DotNet installées sur une machine Windows ?

Après avoir cherché sur le serveur, dans les propriétés, dans les logiciels installés, etc…, j’ai enfin trouvé un début de piste dans la base de registre.

Le souci c’est que récupérer toutes les versions disponibles du framework DotNet via la base de registre n’est pas super convivial.

Après un peu de recherche, j’ai trouvé un sample directement sur la MSDN qui permet d’afficher la liste de toutes les versions du framework DotNet installé.

Liste des frameworks DotNet installés

La fonction suivante permet d’afficher la liste des frameworks DotNet installés sur la machine (source: MSDN)

Private Sub GetVersionFromRegistry()
	Using ndpKey As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey("SOFTWARE\Microsoft\NET Framework Setup\NDP\")
 
		For Each versionKeyName As String In ndpKey.GetSubKeyNames()
			If versionKeyName.StartsWith("v") Then
				Dim versionKey As RegistryKey = ndpKey.OpenSubKey(versionKeyName)
				Dim name As String = DirectCast(versionKey.GetValue("Version", ""), String)
				Dim sp As String = versionKey.GetValue("SP", "").ToString()
				Dim install As String = versionKey.GetValue("Install", "").ToString()
				If install = "" Then
					'no install info, ust be later
					Console.WriteLine(versionKeyName & "  " & name)
				Else
					If sp <> "" AndAlso install = "1" Then
						Console.WriteLine(versionKeyName & "  " & name & "  SP" & sp)
 
					End If
				End If
				If name <> "" Then
					Continue For
				End If
				For Each subKeyName As String In versionKey.GetSubKeyNames()
					Dim subKey As RegistryKey = versionKey.OpenSubKey(subKeyName)
					name = DirectCast(subKey.GetValue("Version", ""), String)
					If name <> "" Then
						sp = subKey.GetValue("SP", "").ToString()
					End If
					install = subKey.GetValue("Install", "").ToString()
					If install = "" Then
						'no install info, ust be later
						Console.WriteLine(versionKeyName & "  " & name)
					Else
						If sp <> "" AndAlso install = "1" Then
							Console.WriteLine("  " & subKeyName & "  " & name & "  SP" & sp)
						ElseIf install = "1" Then
							Console.WriteLine("  " & subKeyName & "  " & name)
						End If
					End If
				Next
			End If
		Next
	End Using
End Sub

Pour ceux qui souhaitent, vous pouvez télécharger l’application complète ici.

 

Leave a Reply

Your email address will not be published. Required fields are marked *