Problemstellung:
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
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.
Private 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 Public Sub Open_RegEdit(oFrm As Form, sRegkey As String) On Error GoTo Open_RegEdit_Error Dim sLastkey As String Dim DoOpenFile As Long 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
Arbeiten mit der Registry
ab A00
Die Zip-Datei enthält eine Version ab A00
Ähnliche Artikel
Weiterlesen...