Rubrik: System/Windows | VB-Versionen: VB2005, VB2008, VB2010 | 04.08.11 |
Alle Assemblies aus dem GAC (Global Assembly Cache) ermitteln Diese Funktion ermittelt alle im GAC installierten Assemblies und liefert diese als generische Liste zurück. | ||
Autor: Dieter Otter | Bewertung: | Views: 8.815 |
www.tools4vb.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Mit nachfolgender Funktion lassen sich alle im GAC (Global Assembly Cache) installierten Assemblies ermitteln. Die Rückgabe der vorhandenen Assmeblies erfolgt hierbei in Form einer generische Liste.
Imports System.Reflection Imports Microsoft.Win32 ...
''' <summary> ''' Ermittelt alle im GAC (Global Assembly Cache) installierte Assemblies ''' </summary> ''' <returns>Generische Liste mit AssemblyName-Objekten</returns> Public Shared Function GetAssembliesFromGAC() As List(Of AssemblyName) Dim AssemblyList As New List(Of AssemblyName)() ' Registry-Zweig öffnen Dim Key As String = "SOFTWARE\Microsoft\Fusion\GACChangeNotification\Default" Dim RegKey As RegistryKey = Registry.LocalMachine.OpenSubKey(Key) ' alle Einträge im Registry-Zweig durchlaufen For Each valueName As String In RegKey.GetValueNames() If RegKey.GetValueKind(valueName) = RegistryValueKind.Binary Then ' Info des Registry-Eintrags Dim Info() As String = valueName.Split(",") ' Assembly-Objekt erstellen Dim Assembly As New AssemblyName(Info(0)) Assembly.Version = New Version(Info(1)) ' Assembly der Liste hinzufügen AssemblyList.Add(Assembly) End If Next Return AssemblyList End Function
Aufrufbeispiel:
Platzieren Sie auf eine Form ein ListView-Control (Detail-Ansicht) mit zwei Spalte (Assemblyname und Version), sowie eine Schaltfläche (Button1).
Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click Dim AssemblyList As List(Of AssemblyName) = GetAssembliesFromGAC() ListView1.Items.Clear() For Each Item As AssemblyName In AssemblyList ListView1.Items.Add(Item.Name).SubItems.Add(Item.Version.ToString) Next End Sub