Jürgen2 10 Geschrieben 19. Oktober 2006 Melden Teilen Geschrieben 19. Oktober 2006 Hallo, ich habe mehrere VBS-Scripte die bestimmte Werte in der Registry löschen. Beispiel: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::: Option Explicit Const HKCU = &H80000001 Const KEYPATH = "Software\Microsoft\Windows\CurrentVersion\Run" Dim Registry, ValueNames, i Set Registry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRe gProv") Registry.EnumValues HKCU, KEYPATH, ValueNames If IsArray(ValueNames) Then For i = 0 To UBound(ValueNames) Registry.DeleteValue HKCU, KEYPATH, ValueNames(i) Next Else End If ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::: Von diesen Scripten habe ich 5 Stück die halt andere Werte löschen. Kann man diese in einen VBS-Script zusammen fassen? Wäre schön, wenn einer helfen könnte! Mfg. Jürgen Zitieren Link zu diesem Kommentar
thumb 10 Geschrieben 19. Oktober 2006 Melden Teilen Geschrieben 19. Oktober 2006 Tach auch, klar kannst Du das, Du musst nur darauf achten, dass bereits deklarierte Variablen (DIM) nicht nochmal deklariert werden. Wenn Du das Löschen als Routine anlegst, kannst Du diese mit dem jeweilig zu löschenden RegKeys aufrufen. Gruß THUMB Zitieren Link zu diesem Kommentar
Jürgen2 10 Geschrieben 19. Oktober 2006 Autor Melden Teilen Geschrieben 19. Oktober 2006 Hallo Thumb, erstmal danke für deine Hilfe, habe den Code testweise dupliziert und abgeändert aber es funktoniert nicht! Option Explicit Const HKCU = &H80000001 Const KEYPATH = "Software\Microsoft\Windows\CurrentVersion\Run" Dim Registry, ValueNames, i Set Registry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRe gProv") Registry.EnumValues HKCU, KEYPATH, ValueNames If IsArray(ValueNames) Then For i = 0 To UBound(ValueNames) Registry.DeleteValue HKCU, KEYPATH, ValueNames(i) Next Else End If Option Explicit Const HKCU = &H80000001 Const KEYPATH = "Software\Microsoft\Windows\CurrentVersion\RunOnce" Set Registry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRe gProv") Registry.EnumValues HKCU, KEYPATH, ValueNames If IsArray(ValueNames) Then For i = 0 To UBound(ValueNames) Registry.DeleteValue HKCU, KEYPATH, ValueNames(i) Next Else End If Was muss ich abändern? Zitieren Link zu diesem Kommentar
notesuser3 10 Geschrieben 20. Oktober 2006 Melden Teilen Geschrieben 20. Oktober 2006 Hallo Jürgen2 ich arbeite in der Regel immer mit Funktionen, das heißt der allgemeine Teil der für alle gilt wird so zusammengestellt, dass man nur noch die Parameter an die Funktion übergibt. Ich sehen mir mal deinen Code an und melde mich dann nochmal. Gruß Notesuser3 Zitieren Link zu diesem Kommentar
notesuser3 10 Geschrieben 20. Oktober 2006 Melden Teilen Geschrieben 20. Oktober 2006 Hallo Thumb, erstmal danke für deine Hilfe, habe den Code testweise dupliziert und abgeändert aber es funktoniert nicht! Option Explicit Const HKCU = &H80000001 Const KEYPATH = "Software\Microsoft\Windows\CurrentVersion\Run" Dim Registry, ValueNames, i Set Registry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRe gProv") Registry.EnumValues HKCU, KEYPATH, ValueNames If IsArray(ValueNames) Then For i = 0 To UBound(ValueNames) Registry.DeleteValue HKCU, KEYPATH, ValueNames(i) Next Else End If Option Explicit Const HKCU = &H80000001 Const KEYPATH = "Software\Microsoft\Windows\CurrentVersion\RunOnce" Set Registry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRe gProv") Registry.EnumValues HKCU, KEYPATH, ValueNames If IsArray(ValueNames) Then For i = 0 To UBound(ValueNames) Registry.DeleteValue HKCU, KEYPATH, ValueNames(i) Next Else End If Was muss ich abändern? Du benutzt die gleiche Konstante und weißt ihr einen neuen Wert zu. Das geht normal nicht. Dazu musst Du die Werte als DIM deklarieren. Gruß Notesuser3 Zitieren Link zu diesem Kommentar
notesuser3 10 Geschrieben 20. Oktober 2006 Melden Teilen Geschrieben 20. Oktober 2006 So ich habe Dir mal ein kleines Grundgerüst zusammengestellt. Option Explicit Call cmdHKEY1 CALL cmdHKEY2 usw. Function cmdHKEY1() CONST strFunctionName = "cmdHKEY1()" DIM strHKCU DIM strKeyPath strHKCU = "&H80000001" strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Run" IF cmdManipulateRegKeys(strHKCU, strKEYPATH) = FALSE IF Err.Number <> 0 then MsgBox "Es ist ein Fehler in Funktion: " & strFunctionName & " mit Fehlernummer: " & Err.Number & _ " und Fehlerbeschreibung: " & Err.Description & " aufgetreten!" Err.Clear END IF End Function Function cmdManipulateRegKeys(strHKCU, strKeypath) On Error Resume Next 'Hauptfunction 'Hauptteil der Funktion CONST strFunctionName = "cmdManipulateRegKeys()" DIM Registry DIM ValueNames DIM i Set Registry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRe gProv") Registry.EnumValues strHKCU, strKEYPATH, ValueNames IF IsArray(ValueNames) THEN For i = 0 to UBound(ValueNames) Registry.DeleteValue strHKCU, strKeypath, ValueNames(i) Next END IF IF Err.Number <> 0 then MsgBox "Es ist ein Fehler in Funktion: " & strFunctionName & " mit Fehlernummer: " & Err.Number & _ " und Fehlerbeschreibung: " & Err.Description & " aufgetreten!" Err.Clear END IF End Function Die Function cmdManipulateRegKeys bleibt immer gleich. Für jeden RegKey legst du eine neue Function cmdHKEY2(), Function cmdHKEY3(), Function cmdHKEY4() usw. an. Spezifiziert hier die entsprechenden Parameter und rufst die Funktion im oberen Teil der Reihe nach auf. Benutzt Du eigentlich einen Editior? Ich benutze den Scite, da kann man seine Skripte auch im Buildmodus ausführen, dann zeigt er dir die Zeile an, bei der er währender Ausführung hängenbleibt. Gruß Notesusers Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.