Rubrik: Verschiedenes / Sonstiges | VB-Versionen: VB.NET | 18.08.08 |
Access-Version aus der Registry auslesen Diese Funktion ermittelt anhand der Windows-Registry die installierte Access-Version und gibt die entsprechenden Infos zurück. | ||
Autor: Heinz Prelle | Bewertung: | Views: 16.307 |
www.visual-basic5.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Diese Funktion ermittelt anhand der Windows-Registry die installierte Access-Version und gibt die entsprechenden Infos zurück.
Imports Microsoft.Win32 Imports System.Text
''' <summary> ''' Access-Informationen aus der Registrierdatenbank ermitteln ''' </summary> ''' <param name="VersionsNumber">Rückgabe: Die extrahierte Versionsnummer</param> ''' <param name="VersionsString">Rückgabe: Die ermittelte Access Version</param> ''' <returns>Der ermittelte Wert des Eintragsnamens</returns> Private Function GetMSAccessInformation(ByRef VersionsNumber As Integer, _ ByRef VersionsString As String) As String ' Ergebnisvariable zur Aufname des Eintragswertes Dim Result As String = String.Empty ' Schlüssel in der Registrierdatenbank oeffnen Using rk As RegistryKey = _ Registry.ClassesRoot.OpenSubKey("Access.Application\CurVer", False) ' Konnte der Pfad geöffnet werden... If rk IsNot Nothing Then ' ... wird der Wert ausgelesen und an die Variable Result übergeben. Result = CType(rk.GetValue(""), String) ' Zur Übergabe an die Variable VersionsNumber wird der Wert aus der ' Variable Result extrahiert... VersionsNumber = CType(Result.Substring( _ Result.LastIndexOf(".") + 1), Integer) ' ...und zur Übergabe and die Variable VersionsString ausgewertet. Select Case VersionsNumber Case 8 VersionsString = "Microsoft Access 97" Case 9 VersionsString = "Microsoft Access 2000" Case 10 VersionsString = "Microsoft Access 2002 / XP" Case 11 VersionsString = "Microsoft Access 2003" Case 12 VersionsString = "Microsoft Access 2007" Case Else VersionsString = "Unbekannt" End Select Else ' Konnte der Pfad in der Registrierdatenbank nicht ausgewertet werden ' wird dieString-Variable Result mit "Fehler" initialisiert. Result = "Fehler" End If End Using Return Result End Function
Beispiel für den Aufruf:
' Übernimmt die Versionsnummer Dim VersionsNumber As Integer = -1 ' Übernimmt die Access-Versions Dim VersionsString As String = String.Empty ' Result übernimmt den aus der Registriedatenbank ' ermittelten(Eintragswert) Dim Result As String = GetMSAccessInformation( _ VersionsNumber, VersionsString) ' Beinhaltet das Ergebnis den Wert Fehler... If Result.Equals("Fehler") Then '...wird ein Hinweis ausgegeben, dass die Informationen ' nicht ermittelt werden konnten... MessageBox.Show("Informationen konnten nicht ermittelt werden.", "Info") Else ' ...ansonsten werden die einzelnen Variablen-Werte an einen ' StringBuilder übergeben und zusammengesetzt. Dim sb As StringBuilder = New StringBuilder With sb .Append("n/" & Result) .Append("n/" & CType(VersionsNumber, String)) .Append("n/" & VersionsString) .Replace("n/", System.Environment.NewLine()) End With MessageBox.Show(sb.ToString(), "Info") End If