Benutzer-Werkzeuge

Webseiten-Werkzeuge


registry

Dies ist eine alte Version des Dokuments!


Table of Contents

1. mit FF-Befehlen

Die Befehle FF_WriteProfile und FF_GetProfile schreiben bzw. lesen (nur!) im Registry-Pfad HKEY_CURRENT_USER\Software\Joachim Koopmann Software\FixFoto\Script. Der Befehl FF_DeleteProfile löscht einzelne Schlüssel oder die gesamte Sektion.

Schreiben und Lesen

RegSection = "DemoScript"

FF_WriteProfile RegSection,"Key", "Wert des Schlüssels" ' Wert schreiben Variable = FF_GetProfile(RegSection,"Key") ' Wert lesen

Löschen

RegSection = "DemoScript"

FF_WriteProfile RegSection,"Key", "Wert des Schlüssels" ' Wert schreiben

FF_DeleteProfile RegSection,"Key" ' löscht einen Schlüssel (ab 3.10 B41) FF_DeleteProfile RegSection,"" ' löscht die gesamte Sektion (ab 3.10 B41) Wird der letzte verbliebene Schlüssel gelöscht, so erfolgt zugleich auch die Löschung der Sektion.

Boolsche Werte

True wird in der Registry als "-1" gespeichert.
False wird der Registry als "0" gespeichert.

2. mit Mitteln des Betriebssystems

Die Registry kann auch mit Hilfe des WshShell-Object (Windows Script Host) oder der Windows Management Instrumentation (WMI) manipuliert werden.

Erstellen, Verändern, Löschen

Quelle
Dim WSHShell Set WSHShell = CreateObject("WScript.Shell")

WSHShell.Popup "Erstellt Key HKCU\MyRegKey mit Wert 'Top level key'" WSHShell.RegWrite "HKCU\MyRegKey", "Top level key"

WSHShell.Popup "Erstellt Key HKCU\MyRegKey\Entry mit Wert 'Second level key'" WSHShell.RegWrite "HKCU\MyRegKey\Entry", "Second level key"

WSHShell.Popup "Wert HKCU\MyRegKey\Value auf REG_SZ 1 setzen" WSHShell.RegWrite "HKCU\MyRegKey\Value", 1

WSHShell.Popup "Wert HKCU\MyRegKey\Entry auf REG_DWORD 2 setzen" WSHShell.RegWrite "HKCU\MyRegKey\Entry", 2, "REG_DWORD"

WSHShell.Popup "Wert HKCU\MyRegKey\Entry\Value1 auf REG_BINARY 3 setzen" WSHShell.RegWrite "HKCU\MyRegKey\Entry\Value1", 3, "REG_BINARY"

WSHShell.Popup "Löscht Wert HKCU\MyRegKey\Entry\Value1" WSHShell.RegDelete "HKCU\MyRegKey\Entry\Value1"

WSHShell.Popup "Löscht Key HKCU\MyRegKey\Entry" WSHShell.RegDelete "HKCU\MyRegKey\Entry"

WSHShell.Popup "Löscht Key HKCU\MyRegKey" WSHShell.RegDelete "HKCU\MyRegKey"

Prüfen, ob Schlüssel existiert / Lesen

Function CheckRegKey(Key)

   ' prüft, ob ein bestimmter Schlüssel vorhanden ist
   ' z.B. "HKEY_CURRENT_USER\Software\Joachim Koopmann Software\FixFoto\Path"
   ' nicht geeignet für die Prüfung von Registryknoten
   Dim result
   Dim WSHShell
   Set WSHShell = CreateObject("WScript.Shell")
   On Error Resume Next
   result = WSHShell.RegRead(Key)
   If result = "" then
        CheckRegKey = false        ' Schlüssel existiert nicht
   Else
        CheckRegKey = true        ' Schlüssel existiert
   End If

End Function

Löschen

' Bsp.: Löschen einer Sektion (funktioniert nicht, wenn Unterzweige existieren) RegSchluessel = "\FF_ScaleAll" ' wichtig ist das "" am Ende TempS = "HKEY_CURRENT_USER\Software\Joachim Koopmann Software\FixFoto\Script" & RegSchluessel

Set WshShell = CreateObject("WScript.Shell") WshShell.RegDelete(TempS)
Sub DeleteKey(Rootkey, KeyPath)

   ' Zweige in der Registry löschen, einschließlich aller Unterzweige
   ' Autor: Thomas@Gartner-IT.net
   ' http://www.it-visions.de/foren/display_message.asp?mid=568
   ' verwendet: WMI
   ' Rootkey bezeichnet den RootKey
       ' HKEY_CLASSES_ROOT = &H80000000
       ' HKEY_CURRENT_USER = &H80000001
       ' HKEY_LOCAL_MACHINE = &H80000002
       ' HKEY_USERS = &H80000003
       ' HKEY_CURRENT_CONFIG = &H80000005
       ' HKEY_DYN_DATA = &H80000006
  ' KeyPath bezeichnet den zu löschenden Zweig
      ' z.B. "Software\Joachim Koopmann Software\FixFoto\SaveState\Ansicht2"
   Dim objReg
   Set objReg = GetObject("winmgmts:\\.\root\default:StdRegProv")
   Dim ValueArray, Value
   ' Unterschlüssel auflisten
   objReg.EnumKey Rootkey, KeyPath, ValueArray
   If Not IsNull(ValueArray) Then
       For Each Value In ValueArray
          ' Rekursion starten
          DeleteKey Rootkey, KeyPath + "\" + Value
       Next
   End If
   ' Schlüssel löschen
   objReg.DeleteKey Rootkey, KeyPath + "\" + Value

End Sub

Windows-Version

' Windows-Version ermitteln Set WshShell = CreateObject("WScript.Shell") winversion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName")

Prüfen, ob Knoten existiert

Function CheckRegNode (Rootkey, SubPath, Node)

   ' prüft, ob ein bestimmter Unterknoten in einem Registrypfad vorhanden ist
   ' GroßKleinSchreibung ist egal
   ' Rootkey bezeichnet den RootKey
        ' HKEY_CLASSES_ROOT     = &H80000000
        ' HKEY_CURRENT_USER     = &H80000001
        ' HKEY_LOCAL_MACHINE    = &H80000002
        ' HKEY_USERS            = &H80000003
        ' HKEY_CURRENT_CONFIG   = &H80000005
   ' Subpath bezeichnet den weiteren Pfad
        ' Bsp.: "Software\Joachim Koopmann Software\FixFoto"
   ' Node bezeichnet den zu prüfenden Knoten
      ' Bsp.: "Options"
   Dim objReg, i
   Dim arrSubKeys, strSubKey, strKeys
   Set objReg = GetObject("winmgmts://./root/default:StdRegProv")
   objReg.EnumKey Rootkey, SubPath, arrSubKeys
   CheckRegNode = False
   Node = UCase(Node)
   for i = 0 to UBound(arrSubKeys) -1
      if UCase(arrSubKeys(i)) = Node then CheckRegNode = True
   next
   Set objReg = Nothing

End Function

alle Knoten einer Ebene ermitteln

Function RegSubKeys (Rootkey, SubPath)

   ' liefert ein Array mit allen Unterknoten zu einem Registrypfad
   ' Rootkey bezeichnet den RootKey
        ' HKEY_CLASSES_ROOT     = &H80000000
        ' HKEY_CURRENT_USER     = &H80000001
        ' HKEY_LOCAL_MACHINE    = &H80000002
        ' HKEY_USERS            = &H80000003
        ' HKEY_CURRENT_CONFIG   = &H80000005
   ' Subpath bezeichnet den weiteren Pfad
        ' Bsp.: Software\Joachim Koopmann Software\FixFoto
   Dim objReg
   Dim arrSubKeys, strSubKey, strKeys
   Set objReg = GetObject("winmgmts://./root/default:StdRegProv")
   objReg.EnumKey Rootkey, SubPath, arrSubKeys
   RegSubKeys = arrSubKeys
   Set objReg = Nothing

End Function

alle Schlüssel einer Ebene ermitteln

Function RegSubValues (Rootkey, SubPath)

  ' liefert ein Array mit allen Schlüsseln zu einem Registrypfad
  ' und dem Typ des jeweiligen Schlüssels
  ' Rootkey bezeichnet den RootKey
  '     HKEY_CLASSES_ROOT     = &H80000000
  '     HKEY_CURRENT_USER     = &H80000001
  '     HKEY_LOCAL_MACHINE    = &H80000002
  '     HKEY_USERS            = &H80000003
  '     HKEY_CURRENT_CONFIG   = &H80000005
  ' Subpath bezeichnet den weiteren Pfad
  '     Bsp.: Software\Joachim Koopmann Software\Text
  Dim oReg
  Dim arrValueNames, arrValueTypes
  Dim i, sammelarr()
  Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
  oReg.EnumValues Rootkey, SubPath, arrValueNames, arrValueTypes
  ReDim sammelarr (UBound(arrValueNames),1)
  For i=0 To UBound(arrValueNames)
      sammelarr(i,0) = arrValueNames(I)
      Select Case arrValueTypes(I)
          Case 1    sammelarr(i,1) = "String"
          Case 2    sammelarr(i,1) = "Expanded String"
          Case 3    sammelarr(i,1) = "Binary"
          Case 4    sammelarr(i,1) = "DWORD"
          Case 7    sammelarr(i,1) = "Multi String"
      End Select
  Next
  RegSubValues = sammelarr
  Set oReg = Nothing

End Function

weiteres Bsp.: Auslesen der FTP-Einstellungen von FF

3. weiterführende Informationen

arrValueNames, arrValueTypesRegSubKeys = arrSubKeys
Set objReg = Nothing

registry.1394960012.txt.gz · Zuletzt geändert: (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki