Registry

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

  1. RegSection = "DemoScript"
  2. FF_WriteProfile RegSection,"Key", "Wert des Schlüssels" ' Wert schreiben
  3. Variable = FF_GetProfile(RegSection,"Key") ' Wert lesen

Löschen

  1. RegSection = "DemoScript"
  2. FF_WriteProfile RegSection,"Key", "Wert des Schlüssels" ' Wert schreiben
  3. FF_DeleteProfile RegSection,"Key" ' löscht einen Schlüssel (ab 3.10 B41)
  4. 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

  1. Dim WSHShell
  2. Set WSHShell = CreateObject("WScript.Shell")
  3.  
  4. WSHShell.Popup "Erstellt Key HKCU\MyRegKey mit Wert 'Top level key'"
  5. WSHShell.RegWrite "HKCU\MyRegKey\", "Top level key"
  6.  
  7. WSHShell.Popup "Erstellt Key HKCU\MyRegKey\Entry mit Wert 'Second level key'"
  8. WSHShell.RegWrite "HKCU\MyRegKey\Entry\", "Second level key"
  9.  
  10. WSHShell.Popup "Wert HKCU\MyRegKey\Value auf REG_SZ 1 setzen"
  11. WSHShell.RegWrite "HKCU\MyRegKey\Value", 1
  12.  
  13. WSHShell.Popup "Wert HKCU\MyRegKey\Entry auf REG_DWORD 2 setzen"
  14. WSHShell.RegWrite "HKCU\MyRegKey\Entry", 2, "REG_DWORD"
  15.  
  16. WSHShell.Popup "Wert HKCU\MyRegKey\Entry\Value1 auf REG_BINARY 3 setzen"
  17. WSHShell.RegWrite "HKCU\MyRegKey\Entry\Value1", 3, "REG_BINARY"
  18.  
  19. WSHShell.Popup "Löscht Wert HKCU\MyRegKey\Entry\Value1"
  20. WSHShell.RegDelete "HKCU\MyRegKey\Entry\Value1"
  21.  
  22. WSHShell.Popup "Löscht Key HKCU\MyRegKey\Entry"
  23. WSHShell.RegDelete "HKCU\MyRegKey\Entry\"
  24.  
  25. WSHShell.Popup "Löscht Key HKCU\MyRegKey"
  26. WSHShell.RegDelete "HKCU\MyRegKey\"

Prüfen, ob Schlüssel existiert / Lesen

  1. Function CheckRegKey(Key)
  2. ' prüft, ob ein bestimmter Schlüssel vorhanden ist
  3. ' z.B. "HKEY_CURRENT_USER\Software\Joachim Koopmann Software\FixFoto\Path"
  4. ' nicht geeignet für die Prüfung von Registryknoten
  5. Dim result
  6. Dim WSHShell
  7. Set WSHShell = CreateObject("WScript.Shell")
  8. On Error Resume Next
  9. result = WSHShell.RegRead(Key)
  10. If result = "" then
  11. CheckRegKey = false ' Schlüssel existiert nicht
  12. Else
  13. CheckRegKey = true ' Schlüssel existiert
  14. End If
  15. End Function

Löschen

  1. ' Bsp.: Löschen einer Sektion (funktioniert nicht, wenn Unterzweige existieren)
  2. RegSchluessel = "\FF_ScaleAll\" ' wichtig ist das "\" am Ende
  3. TempS = "HKEY_CURRENT_USER\Software\Joachim Koopmann Software\FixFoto\Script" & RegSchluessel
  4.  
  5. Set WshShell = CreateObject("WScript.Shell")
  6. WshShell.RegDelete(TempS)
  7.  
  8. Sub DeleteKey(Rootkey, KeyPath)
  9. ' Zweige in der Registry löschen, einschließlich aller Unterzweige
  10. ' Autor: Thomas@Gartner-IT.net
  11. ' http://www.it-visions.de/foren/display_message.asp?mid=568
  12. ' verwendet: WMI
  13. ' Rootkey bezeichnet den RootKey
  14. ' HKEY_CLASSES_ROOT = &H80000000
  15. ' HKEY_CURRENT_USER = &H80000001
  16. ' HKEY_LOCAL_MACHINE = &H80000002
  17. ' HKEY_USERS = &H80000003
  18. ' HKEY_CURRENT_CONFIG = &H80000005
  19. ' HKEY_DYN_DATA = &H80000006
  20. ' KeyPath bezeichnet den zu löschenden Zweig
  21. ' z.B. "Software\Joachim Koopmann Software\FixFoto\SaveState\Ansicht2"
  22. Dim objReg
  23. Set objReg = GetObject("winmgmts:\\.\root\default:StdRegProv")
  24. Dim ValueArray, Value
  25. ' Unterschlüssel auflisten
  26. objReg.EnumKey Rootkey, KeyPath, ValueArray
  27. If Not IsNull(ValueArray) Then
  28. For Each Value In ValueArray
  29. ' Rekursion starten
  30. DeleteKey Rootkey, KeyPath + "\" + Value
  31. Next
  32. End If
  33. ' Schlüssel löschen
  34. objReg.DeleteKey Rootkey, KeyPath + "\" + Value
  35. End Sub

Windows-Version

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

Prüfen, ob Knoten existiert

  1. Function CheckRegNode (Rootkey, SubPath, Node)
  2. ' prüft, ob ein bestimmter Unterknoten in einem Registrypfad vorhanden ist
  3. ' GroßKleinSchreibung ist egal
  4. ' Rootkey bezeichnet den RootKey
  5. ' HKEY_CLASSES_ROOT = &H80000000
  6. ' HKEY_CURRENT_USER = &H80000001
  7. ' HKEY_LOCAL_MACHINE = &H80000002
  8. ' HKEY_USERS = &H80000003
  9. ' HKEY_CURRENT_CONFIG = &H80000005
  10. ' Subpath bezeichnet den weiteren Pfad
  11. ' Bsp.: "Software\Joachim Koopmann Software\FixFoto"
  12. ' Node bezeichnet den zu prüfenden Knoten
  13. ' Bsp.: "Options"
  14. Dim objReg, i
  15. Dim arrSubKeys, strSubKey, strKeys
  16. Set objReg = GetObject("winmgmts://./root/default:StdRegProv")
  17. objReg.EnumKey Rootkey, SubPath, arrSubKeys
  18. CheckRegNode = False
  19. Node = UCase(Node)
  20. for i = 0 to UBound(arrSubKeys) -1
  21. if UCase(arrSubKeys(i)) = Node then CheckRegNode = True
  22. next
  23. Set objReg = Nothing
  24. End Function

alle Knoten einer Ebene ermitteln

  1. Function RegSubKeys (Rootkey, SubPath)
  2. ' liefert ein Array mit allen Unterknoten zu einem Registrypfad
  3. ' Rootkey bezeichnet den RootKey
  4. ' HKEY_CLASSES_ROOT = &H80000000
  5. ' HKEY_CURRENT_USER = &H80000001
  6. ' HKEY_LOCAL_MACHINE = &H80000002
  7. ' HKEY_USERS = &H80000003
  8. ' HKEY_CURRENT_CONFIG = &H80000005
  9. ' Subpath bezeichnet den weiteren Pfad
  10. ' Bsp.: Software\Joachim Koopmann Software\FixFoto
  11. Dim objReg
  12. Dim arrSubKeys, strSubKey, strKeys
  13. Set objReg = GetObject("winmgmts://./root/default:StdRegProv")
  14. objReg.EnumKey Rootkey, SubPath, arrSubKeys
  15. RegSubKeys = arrSubKeys
  16. Set objReg = Nothing
  17. End Function

alle Schlüssel einer Ebene ermitteln

  1. Function RegSubValues (Rootkey, SubPath)
  2. ' liefert ein Array mit allen Schlüsseln zu einem Registrypfad
  3. ' und dem Typ des jeweiligen Schlüssels
  4. ' Rootkey bezeichnet den RootKey
  5. ' HKEY_CLASSES_ROOT = &H80000000
  6. ' HKEY_CURRENT_USER = &H80000001
  7. ' HKEY_LOCAL_MACHINE = &H80000002
  8. ' HKEY_USERS = &H80000003
  9. ' HKEY_CURRENT_CONFIG = &H80000005
  10. ' Subpath bezeichnet den weiteren Pfad
  11. ' Bsp.: Software\Joachim Koopmann Software\Text
  12. Dim oReg
  13. Dim arrValueNames, arrValueTypes
  14. Dim i, sammelarr()
  15. Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
  16. oReg.EnumValues Rootkey, SubPath, arrValueNames, arrValueTypes
  17. ReDim sammelarr (UBound(arrValueNames),1)
  18. For i=0 To UBound(arrValueNames)
  19. sammelarr(i,0) = arrValueNames(I)
  20. Select Case arrValueTypes(I)
  21. Case 1 sammelarr(i,1) = "String"
  22. Case 2 sammelarr(i,1) = "Expanded String"
  23. Case 3 sammelarr(i,1) = "Binary"
  24. Case 4 sammelarr(i,1) = "DWORD"
  25. Case 7 sammelarr(i,1) = "Multi String"
  26. End Select
  27. Next
  28. RegSubValues = sammelarr
  29. Set oReg = Nothing
  30. End Function

weiteres Bsp.: Auslesen der FTP-Einstellungen von FF

3. weiterführende Informationen