Tipp 6.9 - Registry-Schlüssel in REG-Datei

Wie kann ich einen Registry-Schlüssel in eine REG-Datei exportieren?

Mit dieser Funktion kann man einen Registry-Schlüssel in eine REG-Datei exportieren. Dabei wird lediglich der Registrierungseditor aufgerufen und dafür benutzt, die entsprechende Datei zu erstellen.

Das wäre zwar auch mit API-Funktionen in VB möglich, nur wäre der Aufwand enorm höher ohne einen wirklichen Vorteil zu haben.

Kopieren Sie einfach nachfolgenden Quellcode in die Zwischenablage und fügen Sie anschließend den Inhalt der Zwischenablage in ein neues Modul ein. Die Aufrufparameter finden Sie im Quellcode beschrieben.

Api-AufrufeVerwendete Win32-Api-Aufrufe und Typen: ShellExecute

Beispiel:

'Registry-Schlüssel in REG-Datei
Declare Function ShellExecute Lib "shell32.dll" Alias _
                "ShellExecuteA" _
                (ByVal hwnd As Long, _
                 ByVal lpOperation As String, _
                 ByVal lpFile As String, _
                 ByVal lpParameters As String, _
                 ByVal lpDirectory As String, _
                 ByVal nShowCmd As Long) As Long
 
Function RegExport(ByVal sRegPath As String, _
                   ByVal sExportFile As String) As Boolean
'// ======================================================================
'// Funktion: |Exportieren eines Registry-Schlüssels mithilfe des Reg.-
'//           |editors REGEDIT.EXE.
'// ----------------------------------------------------------------------
'// Vorauss.: |Leserechte für die Registry
'//           |Schreibrechte für die Exportdatei
'// ----------------------------------------------------------------------
'// Parameter:|sRegPath = der zu exportierende Registry-Schlüssel
'//           |sExportFile = vollständiger Dateipfad für den Export
'// ----------------------------------------------------------------------
'// Rückgabe: |True bei Erfolg, sonst False
'// ----------------------------------------------------------------------
'// Autor:    |Stefan Kulpa, 03.10.2006
'// geändert: |
'// ======================================================================
'// Beispiel: |HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
'//           |alle automatisch startenden Programme...
'// MsgBox RegExport( _
'//       "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", _
'//       "C:\Autorun.reg")
'// ======================================================================
'// Hinweis:  |ACHTUNG: umfangreiche Pfade wie z.B. direkt der Pfad
'//           |HKEY_LOCAL_MACHINE\SOFTWARE dauern entsprechend lang !!!
'// ======================================================================
    On Error GoTo Err_RegExport
 
    Const csREGEXE      As String = "regedit.exe"
    Const csEXEPARAM    As String = " /E "
    Dim sCmdLine        As String
    Dim lResult         As Long
 
    sCmdLine = csEXEPARAM & sExportFile & Space$(1) & QuoteIt(sRegPath)
    lResult = ShellExecute(0&, "open", csREGEXE, sCmdLine, 0&, vbHide)
    RegExport = CBool(lResult > 32)
 
Exit_RegExport:
    On Error GoTo 0
    Exit Function
 
Err_RegExport:
    RegExport = False
    Resume Exit_RegExport
 
End Function
 
Function QuoteIt(ByVal sValue As String) As String
 
'// " durch ' ersetzen
    sValue = Replace$(sValue, Chr(34), Chr(39))
    QuoteIt = Chr(34) & sValue & Chr(34)
 
End Function