meta data for this page
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
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
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
zu Regedit: