Hier 3 Scripts, die Registry-Keys löschen.
Script 1: mehrer definierte Keys werden gelöscht:
Damit es nur ein mal je Client ausgeführt wird und man kontrollieren kann, ob das Script erfolgreich umgesetzt wurde, wird am Client eine Logdatei angelegt
Aufbau des Scripts:
- Es wird der Pfad zur Logdatei definiert (C:\registry.txt)
- Wenn diese noch nicht vorhanden ist, dann werden in diesem Beispielscript 3
Registry-Keys definiert (… Beispielhaft wurden Keys gewählt, die Vista / Windows 7
anlegt, um damit Login-Probleme zu verursachen…
- mit einer FOR/NEXT – Schleife werden die 3 Keys gelöscht
- es wird die Logdatei angelegt; sie enthält den Text “registry wurde verändert am
xx. xx. xxxx tt:mm”
Was muss vom Administrator in diesem Script geändert werden?
Zeile 5 » der Pfad, in dem die Logdatei am Client gespeichert wird
Zeile 15 » der entsprechende Registry-Key
Verwendung innerhalb einer Gruppenrichtlinie:
Script entsprechend verändern (dh, den Key anpassen) und als Startscript in der Computerkonfiguration (!) in der jeweiligen OU anwenden!
[dadurch wird das Script mit dem Systemkonto ausgeführt! Würde das Script als Startscript in der Benutzerkonfiguration hinterlegt werden, würden dem jeweiligen User die Rechte fehlen, die Registry zu ändern --> das Script würde NICHT angewendet werden!]
Download –> mehrere_Registry_key_loeschen.vbs
'############## Edi Pfisterer -- 28/3/2011 -- mehrere RegistryKeys löschen ############## on Error resume next logdatei = "c:\registry.txt" ' Pfad zur Logdatei Set fs = CreateObject("Scripting.FileSystemObject") If NOT fs.FileExists (logdatei) then '############################ registryKeys löschen ############################' Set WshShell = WScript.CreateObject("WScript.Shell") key = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" dim ergaenzung(3) ergaenzung(1)= "S-1-5-21-3195515648-4063550529-2982841958-3286.bak" ' SSID von Lehrer 1 ergaenzung(2)= "S-1-5-21-3195515648-4063550529-2982841958-3296.bak" 'SSID von Lehrer 2 ergaenzung(3)= "S-1-5-21-3195515648-4063550529-2982841958-3304.bak" ' SSID von Lehrer 3 for i = 1 to 3 WshShell.RegDelete key & ergaenzung(i) & "\" next '########################## LOGDATEI schreiben ######################## Set a = fs.CreateTextFile(logdatei, True) a.WriteLine("registry wurde verändert am " & now()) a.Close END IF
Script 2: EIN Key wird gelöscht, am Client wird eine Logdatei angelegt
Falls nur 1 Registry Key gelöscht werden sollte, kann alternativ folgender Quelltext kopiert und als 1_registry_key_loeschen.vbs gespeichert werden:
'############## Edi Pfisterer -- 28/3/2011 -- einen RegistryKey löschen ############## on Error resume next logdatei = "c:\registry.txt" ' aenderbar: Pfad zur Logdatei Set fs = CreateObject("Scripting.FileSystemObject") If NOT fs.FileExists (logdatei) then '############################ registryKeys löschen ############################' Set WshShell = WScript.CreateObject("WScript.Shell") key = "HKEY_LOCAL_MACHINE\...\..." WshShell.RegDelete key & "\" '########################## LOGDATEI schreiben ######################## Set a = fs.CreateTextFile(logdatei, True) a.WriteLine("der Key " & key & " wurde gelöscht am " & now()) a.Close END IF
Script 3: automatisiertes Löschen von Keys, die eine bestimmte Eigenschaft aufweisen
Es werden alle im Pfad “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList” befindlichen Schlüssel gelöscht, die auf inkonsistente Profile hinweisen, und daher umbenannt wurden in
S- [...]- SSID.bak
zusätzlich werden – falls noch vorhanden – die zugehörigen Profile umbenannt!
–> Download: hier
weiterführende Informationen:
andere Methoden : WshShell.RegWrite --> Registry Key eintragen [zB: WshShell.RegWrite "HKCU\Software\ACME\FortuneTeller\", 1, "REG_BINARY"] WshShell.RegDelete --> Registry Key löschen WshShell.RegRead --> Registry Key lesen BEACHTE: der Backslash am Ende des Keys [im Beispielscript Zeile 27] - ohne den geht NICHTS!!!Zum weiterlesen: Reg Delete Method