regdelete arbeitet nicht sauber

  • [autoit]

    For $i = 1 to 500
    $var = RegEnumVal("HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerTypedURLs", $i)
    if @error <> 0 Then ExitLoop
    $key = RegRead ("HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerTypedURLs",$var)
    RegDelete ("HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerTypedURLs",$var)
    GUICtrlSetData($out,"delete: "&$key)
    sleep (100)
    Next

    [/autoit]

    Wo ist da der Fehler? Mal angenommen es existieren 10 Einträge, dann werden nur 5 gelöscht... :irre:

    Das ist doch eigentlich ein ganz simple Sache. Oder sehe ich den Wald vor lauter Bäumen wieder nicht.

    Edit:

    Auch wenn ich den Sleep auf 1000 erhöhe klappt es nicht.

    2 Mal editiert, zuletzt von localhost (7. September 2006 um 13:21)

  • peethebee : Sorry, das kapier ich jetzt nicht. Wie sollte das ganze dann aussehen? Und woher bekomme ich dann $i?

    Den Fehler konnte ich auf jeden Fall eingrenzen:

    Code
    $var = RegEnumVal("HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerTypedURLs", $i)

    Hier liest er noch nicht einmal alle Einträge aus.

    EDIT:

    Danke an peethebee

    Hier die Lösung:

    [autoit]

    For $i = 1 to 500
    $var = RegEnumVal("HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerTypedURLs", $i)
    if @error <> 0 Then ExitLoop
    $key = RegRead ("HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerTypedURLs",$var)
    RegDelete ("HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerTypedURLs",$var)
    $i=$i-1
    GUICtrlSetData($out,"delete: "&$key)
    next

    [/autoit]

    2 Mal editiert, zuletzt von localhost (7. September 2006 um 14:02)

  • Berechtigungen!

    Wer weiß was da für Berechtigungen daruf sitzen.
    In einer Domänenumgebung sollte man auf so etwas achten ;)

    Bin mir zu Hause würde ich das einfach machen.

  • Da muss ich Dir recht geben, Schlussendlich zählt nur dass es zuverlässig und stabil läuft. Falls du berechtigungsmässig alles auf einen Nenner bringen möchtest empfehle ich Dir dies über GPO festzulegen.

    eddy_erpel