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.279

 

Ähnliche Artikel

You have no rights to post comments

Login Form

Neueste Artikel

SQL zu VBA Konverter
26. Oktober 2018
Problemstellung: Nur für 32Bit Office Versionen Gibt es eine Möglichkeit SQL-Code einer Abfrage so zu konvertieren das der Code in VBA genutzt werden kann? Lösung: Bis Access 2010 gibt das Tool...
1.png5.png8.png5.png3.png0.png3.png
Heute48
Gestern496
Diese Woche1461
Dieser Monat5177
Total1585303

  • IP: 3.145.175.243
  • Browser: Unknown
  • Version:
  • OS: Unknown

Online

3
Online

19. April 2024

Letzte Kommentare

  • Berechnen von Zeiträumen als Abfragekriterium

    elmard 02.02.2021 21:02
    1000 Dank
    für diese Datenbankanwendung! Eine sehr gute Umsetzung mit den vielen Möglichkeiten des Datums.

    Weiterlesen...

     
  • SQL zu VBA Konverter

    Tommy Admin 03.11.2019 16:33
    RE: SQL zu VBA Konverter
    Hallo Elmard, danke für die Info. :lol:

    Weiterlesen...

     
  • SQL zu VBA Konverter

    elmard 03.11.2019 14:49
    Bei SmartTools neue Version 4.0
    Dieses Tool liegt inzwischen in der Version 4 vor und läuft nun auch von A2013 und A2016 sowie im ...

    Weiterlesen...

     
  • Workshop zur Benutzung des Multi-Column TreeView Control unter MS-Access

    TommyK 27.02.2019 06:52
    Workshop
    Hallo mpegjunkie, danke für Dein Feedback. Schön das Dir Workshop weiter hilft. :D

    Weiterlesen...

     
  • Workshop zur Benutzung des Multi-Column TreeView Control unter MS-Access

    mpegjunkie 26.02.2019 20:10
    Perfekter Workshop
    Hallo Tommy, perfekter Workshop, toll und umfassend erläutert. Jetzt nutze ich diese Controls auch.

    Weiterlesen...