1 1 1 1 1 1 1 1 1 1 Rating 5.00 (1 Vote)

Problemstellung:

Für 32Bit und 64Bit Office Versionen

Diese Bsp-DB beschäftigt sich mit Lösungen um mit VB(A) die Windows Registrydatei zu lesen
bzw. bearbeiten zu können
Um mittels VB(A) mit der Registry arbeiten zu können sind eine Vielzahl von API-Funktionen erforderlich.
Alle erforderliche Aufrufe, Auflistungen und Funktionen befinden sich im Modul: mod_Registry der Bsp-DB
Um alle Funktionen zu verwenden ist es nur erforderlich das Modul in die betreffende DB zu importieren.

Aber wie geht das? Das erfahrt Ihr im Folgenden.

Voraussetzungen:
Das Bsp ist ab A00 lauffähig


Einzige Einschränkung ist unter Windows Vista das Auslesen der ProductId (s. Bsp-DB).
Dies ist nicht möglich da dieser Schlüssel nicht existiert

Funktionsweise:
Leider ist es nicht möglich den Registry-Editor zu öffnen und gleich einen ein kompletten Schlüssel mit zu geben
damit der Editor direkt dort hin springt.
Windows speichert aber den letzten aufgerufenen Schlüssel im Schlüssel:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\LastKey
Der folgende Code macht sich diesen Umstand zu nutze (s. mod_Regedit )
Unter Windws Vista tritt, eigenartigerweise, der Laufzeitfehler 5 beim Aufruf des
Registryeditors mittels Shell-Methode auf.
Deswegen ist zusätzlich die ShellExecute-Funktion mit enthalten.
#If VBA7 Then
    'Code für 32 bit und 64 bit Office VBA 7
     #If Win64 Then
        'Code für 64-bit Office VBA 7
        Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal Hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nshowcmd As Long) As LongPtr
     #Else
        'Code für 32-bit Office VBA 7
        Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal Hwnd As Long, ByVal Ipoperation As String, ByVal Ipfile As String, ByVal Ipparameters As String, ByVal Ipdirectory As String, ByVal nshowcmd As Long) As Long
     #End If
#Else
    'Code für VBA 6 (32 bit)
    Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal Hwnd As Long, ByVal Ipoperation As String, ByVal Ipfile As String, ByVal Ipparameters As String, ByVal Ipdirectory As String, ByVal nshowcmd As Long) As Long
#End If
        
Public Sub Open_RegEdit(oFrm As Form, sRegkey As String)

    On Error GoTo Open_RegEdit_Error

    Dim sLastkey As String
'    Dim DoOpenFile As Long
'    Dim DoOpenFile2 As LongPtr

#If VBA7 Then
    'Code für 32 bit und 64 bit Office VBA 7
     #If Win64 Then
        Dim DoOpenFile As LongPtr
     #Else
        Dim DoOpenFile As Long
     #End If
#Else
    Dim DoOpenFile As Long
#End If
    
    sLastkey = fWertLesen(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Applets\Regedit", "LastKey")

    If sLastkey <> sRegkey Then
        fStringSpeichern HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Applets\Regedit", "LastKey", sRegkey
    End If
    
    Shell ("regedit.exe")
    
    On Error GoTo 0
    Exit Sub

Open_RegEdit_Error:
    If Err.Number = 5 Then
        DoOpenFile = ShellExecute(oFrm.Hwnd, vbNullString, "regedt32.exe", vbNullString, vbNullString, 1)
    ElseIf Err.Number = 53 Then
        Shell ("regedt32.exe")
    Else
        Dim strErrString As String
        strErrString = "Error Information..." & vbCrLf
        strErrString = strErrString & "Error#: " & Err.Number & vbCrLf
        strErrString = strErrString & "Description: " & Err.Description
        MsgBox strErrString, vbCritical + vbOKOnly, "Error in procedure Open_RegEdit of Modul Regedit"
    End If
End Sub

Die Prozedur erwartet 2 Parameter.

oFrm = das Formular, meistens Me.
sRegKey = der Schlüssel zu dem gesprungen werden soll.

Zuerst wird der gespeicherte Schlüssel gelesen und mit dem übergebenen verglichen.
Sind diese ungleich wird der übergebene gespeichert und der Registryeditor geöffnet.
z.B.:

1
Open_RegEdit Me, "HKEY_CURRENT_USER\Software\TommyK\BspDB"

In der Bsp-DB sind folgende Lösungen enthalten:

1. Auslesen der Windows ProductId (nicht bei Windows Vista)
2. Auslesen des Run-Keys (Autostart der Registry)
3. Lesen, Schreiben und Löschen eines Schlüssels.
4. Bsp. zum Speichern von Formularpostionen in der Registry

Dateien:
(0 Stimmen)

Für 32Bit und 64Bit Office Versionen

Arbeiten mit der Registry

ab A07

Die Zip-Datei enthält eine Version ab A07

Datum 05.02.2018
Dateigröße 43.35 KB
Download 1.280

 

Ähnliche Artikel