====== 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 ([[http://de.wikipedia.org/wiki/Windows_Management_Instrumentation|WMI]])** manipuliert werden.\\ \\
==== Erstellen, Verändern, Löschen ====
[[http://www.source-center.de/forum/showthread.php?758-Erstellen-L%F6schen-Editieren-%DCberpr%FCfen-von-Registrierungsschl%FCsseln|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.:
[[/Boostskripte|Auslesen der FTP-Einstellungen]] von FF
===== 3. weiterführende Informationen =====
* [[http://www.wintotal.de/artikel/artikel-2004/7125.html]]
* [[http://www.source-center.de/forum/showthread.php?758-Erstellen-L%F6schen-Editieren-%DCberpr%FCfen-von-Registrierungsschl%FCsseln]]
* [[http://msdn.microsoft.com/en-us/library/windows/desktop/aa393664(v=VS.85).aspx]]
zu Regedit:
* [[http://www.winfaq.de/faq_html/Content/tip2000/onlinefaq.php?h=tip2045.htm]]