Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0032: Installationsverzeichnis und Version von VB suchen

 von 

Beschreibung 

Um den Installationspfad und die Version von VB erfassen zu können, muß nach einem entsprechenden Eintrag in der Registry Ausschau gehalten werden. Und das geht so:

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

RegCloseKey, RegOpenKeyExA (RegOpenKeyEx), RegQueryValueExA (RegQueryValueEx)

Download:

Download des Beispielprojektes [2,53 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Beschriftungsfeld "Label1"

Option Explicit

Private Declare Function RegOpenKeyEx Lib "advapi32.dll" _
        Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal _
        lpSubKey As String, ByVal ulOptions As Long, _
        ByVal samDesired As Long, phkResult As Long) As Long
        
Private Declare Function RegQueryValueEx Lib "advapi32.dll" _
        Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal _
        lpValueName As String, ByVal lpReserved As Long, _
        lpType As Long, lpData As Any, lpcbData As Long) As Long
        
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal _
        hKey As Long) As Long

Const ERROR_SUCCESS As Long = 0&
Const HKEY_LOCAL_MACHINE As Long = &H80000002
Const STANDARD_RIGHTS_ALL As Long = &H1F0000
Const KEY_QUERY_VALUE As Long = &H1&
Const KEY_SET_VALUE As Long = &H2&
Const KEY_CREATE_SUB_KEY As Long = &H4&
Const KEY_ENUMERATE_SUB_KEYS As Long = &H8&
Const KEY_NOTIFY As Long = &H10&
Const KEY_CREATE_LINK As Long = &H20&
Const SYNCHRONIZE As Long = &H100000
Const KEY_ALL_ACCESS As Long = ((STANDARD_RIGHTS_ALL Or _
                         KEY_QUERY_VALUE Or KEY_SET_VALUE Or _
                         KEY_CREATE_SUB_KEY Or _
                         KEY_ENUMERATE_SUB_KEYS Or _
                         KEY_NOTIFY Or KEY_CREATE_LINK) And _
                         (Not SYNCHRONIZE))

Private Sub Form_Load()
    Dim hKey As Long, Length As Long, ValType As Long, Vx As Long
    Dim Value As String, Path As String, V As String
     
    '### Entsprechenden Registry-Schlüssel öffnen
    Path = "SOFTWARE\Microsoft\Visual Basic\"

    If RegOpenKeyEx(HKEY_LOCAL_MACHINE, Path & "6.0", 0&, _
        KEY_ALL_ACCESS, hKey) = ERROR_SUCCESS Then
        
        V = "6.0"
    Else
        If RegOpenKeyEx(HKEY_LOCAL_MACHINE, Path & "5.0", 0&, _
            KEY_ALL_ACCESS, hKey) = ERROR_SUCCESS Then
            
            V = "5.0"
        Else
            If RegOpenKeyEx(HKEY_LOCAL_MACHINE, Path & "4.0", _
                0&, KEY_ALL_ACCESS, hKey) = ERROR_SUCCESS Then
                 
                V = "4.0"
            Else
                Label1 = "Fehler beim Öffnen des Schlüssels!"
                Exit Sub
            End If
        End If
    End If
    
    '### Registry-Schlüssel auslesen
    Length = 255
    Value = Space$(Length)
    If RegQueryValueEx(hKey, "InstallDir", 0&, ValType, ByVal _
       Value, Length) <> ERROR_SUCCESS Then
         Label1 = "Fehler beim Aulesen des Schlüssels!"
         Exit Sub
    End If
        
    '### Registry-Schlüssel schließen
    If RegCloseKey(hKey) <> ERROR_SUCCESS Then
        Label1 = "Fehler beim Schließen des Schlüssels!"
        Exit Sub
    End If
    
    Value = Left$(Value, Length - 1)
    Label1 = "Sie benutzen die Version " & V & vbCrLf _
             & "Dieses wurde in das Verzeichnis  '" _
             & Value & "'  installiert."
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 3 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Raanubis am 12.03.2003 um 18:17

Es funzt allerdings wurde hier nicht unterschieden, ob man Visual Studio oder 'nur' Visual Basic installiert hat.
Ansonsten wenn MS es geändert hat, sollte man bei:

'### Entsprechenden Registry-Schlüssel öffnen
Path = "SOFTWARE\Microsoft\Visual Basic\"

folgendes eintragen

'### Entsprechenden Registry-Schlüssel öffnen
Path = "SOFTWARE\Microsoft\VisualStudio\"

Der Rest müsste gleich bleiben

Kommentar von Mirko Heinkel am 13.11.2001 um 15:32

oops, sorry, falsche baustelle ;-))
mirko

Kommentar von Mirko Heinkel am 13.11.2001 um 15:31

kleiner bug:
in funktion CalcFTime geht die stunde um 1 std nach.
lösung:
diese zeile abändern:
Zeit = .wHour + 1 & ":" & mm & ":" & ss
mirko