RegManager for XP

  • Hallo,
    ich würde euch gern' mein erstes Programm vorstellen, den RegManager for XP!
    Mit diesem Programm kann man per GUI verschiedene Änderungen in der Registry vornehmen, hier das Script:

    Spoiler anzeigen
    [autoit]


    ;==============================================================
    ;Scripted by xp_fan from autoit.de
    ;==============================================================
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #RequireAdmin
    Global $Radio[4]
    $GUI1 = GUICreate("RegManager for XP", 490, 170)
    $Radio[0] = GUICtrlCreateRadio("Message-Box vor der Anmeldung konfigurieren", 30, 20)
    $Radio[1] = GUICtrlCreateRadio("Autostarteintrag (Run) hinzufügen", 30, 40)
    $Radio[2] = GUICtrlCreateRadio("CMD per Kontextmenü öffnen", 30, 60)
    $Radio[3] = GUICtrlCreateRadio("Verknüpfungen verändern", 30, 80)
    $Button1 = GUICtrlCreateButton("Initialisieren", 30, 120)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    GUIDelete()
    Exit
    Case $msg = $Button1
    If GUICtrlRead($Radio[0]) = $GUI_CHECKED Then
    _ChangeMessages()
    EndIf
    If GUICtrlRead($Radio[1]) = $GUI_CHECKED Then
    _CreateRun()
    EndIf
    If GUICtrlRead($Radio[2]) = $GUI_CHECKED Then
    _CMD()
    EndIf
    If GUICtrlRead($Radio[3]) = $GUI_CHECKED Then
    _lnk()
    EndIf
    EndSelect
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _ChangeMessages()
    GUIDelete($GUI1)
    $GUI2 = GUICreate("Message-Box vor der Anmeldung konfigurieren", 490, 200)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    $Label4 = GUICtrlCreateLabel("Message-Box vor Anmeldung erzeugen/konfigurieren:", 10, 10)
    $Label5 = GUICtrlCreateLabel("Überschrift (aktuell)", 10, 30)
    $Label6 = GUICtrlCreateLabel("Inhalt (aktuell)", 170, 30)
    $Ueb3 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system", "legalnoticecaption")
    If @error <> 0 Then
    _Error()
    EndIf
    $Input3 = GUICtrlCreateInput($Ueb3, 10, 45, 120, 20)
    $Ueb4 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system", "legalnoticetext")
    If @error <> 0 Then
    _Error()
    EndIf
    $Input4 = GUICtrlCreateInput($Ueb4, 170, 45, 300, 20)
    $Icon = GUICtrlCreateIcon(@SystemDir & "\wmploc.dll", -71, 56, 135)
    $Label7 = GUICtrlCreateLabel("Hinweis:" & @LF & "In den Eingabefelder werden die aktuellen Werte angezeigt," & @LF & "diese können Sie einfach verändern!" & @LF & "Wenn Sie die Message-Box entfernen wollen," & @LF & "lassen Sie die Felder leer und klicken Sie auf Übernehmen!", 106, 115)
    $Button1 = GUICtrlCreateButton("Übernehmen", 10, 70, 100, 20)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $Button1
    $Reg3 = GUICtrlRead($Input3)
    $Reg4 = GUICtrlRead($Input4)

    [/autoit] [autoit][/autoit] [autoit]

    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system", "legalnoticecaption", "REG_SZ", $Reg3);2
    If @error <> 0 Then
    _Error()
    EndIf
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system", "legalnoticetext", "REG_SZ", $Reg4);22
    If @error <> 0 Then
    _Error()
    EndIf
    GUIDelete()
    _RestartInfo()
    EndSelect
    WEnd
    EndFunc ;==>_ChangeMessages

    [/autoit] [autoit][/autoit] [autoit]

    Func _RestartInfo()
    GUIDelete()
    $GUI3 = GUICreate("System neustarten?", 480, 130)
    $Icon = GUICtrlCreateIcon(@SystemDir & "\wmploc.dll", -71, 20, 30)
    $Label1 = GUICtrlCreateLabel("Die Änderungen wurden übernommen, sie treten nach einem Neustart in Kraft!" & @LF & "Soll Ihr Computer jetzt neugestartet werden?", 80, 30)
    $Button1 = GUICtrlCreateButton("&Jetzt neustarten", 140, 80)
    $Button2 = GUICtrlCreateButton("&Später neustarten", 235, 80)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $Button1
    GUIDelete()
    Shutdown(2)
    Exit
    Case $msg = $Button2
    GUIDelete()
    Exit
    EndSelect
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_RestartInfo

    [/autoit] [autoit][/autoit] [autoit]

    Func _CreateRun()
    GUIDelete($GUI1)
    $GUI3 = GUICreate("Autostarteintrag (Run) hinzufügen", 490, 200)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    $Label1 = GUICtrlCreateLabel("Einen Autostarteintrag (Run) hinzufügen:", 10, 10)
    $Label2 = GUICtrlCreateLabel("Name", 10, 30)
    $Label3 = GUICtrlCreateLabel("Pfad", 170, 30)
    $Input5 = GUICtrlCreateInput("", 10, 45, 120, 20)
    $Input6 = GUICtrlCreateInput("", 170, 45, 300, 20)
    $Icon = GUICtrlCreateIcon(@SystemDir & "\wmploc.dll", -71, 56, 135)
    $Label4 = GUICtrlCreateLabel("Hinweis:" & @LF & "Wählen Sie einen beliebigen Namen für den Eintrag" & @LF & "und geben Sie als Pfad den Pfad der zu startenden Datei an." & @LF & "Klicken Sie anschließend auf Hinzufügen.", 106, 115)

    [/autoit] [autoit][/autoit] [autoit]

    $Button1 = GUICtrlCreateButton("Eintrag hinzufügen", 10, 70, 100, 20)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $Button1
    $I1 = GUICtrlRead($Input5)
    $I2 = GUICtrlRead($Input6)

    [/autoit] [autoit][/autoit] [autoit]

    RegWrite("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", $I1, "REG_SZ", $I2)
    If @error <> 0 Then
    _Error()
    EndIf
    GUIDelete()
    _RestartInfo()
    EndSelect
    WEnd
    EndFunc ;==>_CreateRun

    [/autoit] [autoit][/autoit] [autoit]

    Func _CMD()
    GUIDelete($GUI1)
    $GUI4 = GUICreate("CMD per Kontextmenü öffnen", 490, 180)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    $Label1 = GUICtrlCreateLabel("CMD per Kontextmenü öffnen:", 10, 10)
    $Icon2 = GUICtrlCreateIcon(@SystemDir & "\wmploc.dll", -71, 20, 105)
    $Label2 = GUICtrlCreateLabel("Hinweis:" & @LF & "Mit dieser Funktion können Sie bei Ordnern einen Eintrag im Kontextmenü einfügen," & @LF & "um den CMD (Eingabeaufforderung) direkt in diesem Ordner zu öffnen." & @LF & "Klicken Sie auf den Button, um diese Funktion zu aktivieren/deaktivieren.", 86, 96)

    [/autoit] [autoit][/autoit] [autoit]

    RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\cmd", "")
    $cmd_error = @error

    [/autoit] [autoit][/autoit] [autoit]

    If $cmd_error = 0 Then
    $Icon = GUICtrlCreateIcon(@SystemDir & "\wmploc.dll", -76, 20, 35)
    $Label3 = GUICtrlCreateLabel("Die Funktion ist aktiviert.", 80, 43)
    $Button1 = GUICtrlCreateButton("Deaktivieren", 220, 43, 70)
    $aktiv = 1
    Else
    $Icon = GUICtrlCreateIcon(@SystemDir & "\wmploc.dll", -51, 20, 35)
    $Label3 = GUICtrlCreateLabel("Die Funktion ist deaktiviert.", 70, 43)
    $Button1 = GUICtrlCreateButton("Aktivieren", 220, 43, 80)
    $aktiv = 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $Button1
    If $aktiv = 1 Then
    GUICtrlSetImage($Icon, @SystemDir & "\wmploc.dll", -51)
    GUICtrlSetData($Button1, "Aktivieren")
    GUICtrlSetData($Label3, "Die Funktion ist deaktiviert.")
    RegDelete("HKEY_CLASSES_ROOT\Folder\shell\cmd")
    If @error <> 0 Then
    _Error()
    EndIf
    _NoRestart()
    Else
    GUICtrlSetImage($Icon, @SystemDir & "\wmploc.dll", -76)
    GUICtrlSetData($Button1, "Deaktivieren")
    GUICtrlSetData($Label3, "Die Funktion ist aktiviert.")
    RegWrite("HKEY_CLASSES_ROOT\Folder\shell\cmd", "", "REG_SZ", "Eingabeaufforderung öffnen")
    If @error <> 0 Then
    _Error()
    EndIf
    Sleep(1000)
    RegWrite("HKEY_CLASSES_ROOT\Folder\shell\cmd\command", "", "REG_SZ", "CMD.EXE /S /K pushd %1")
    _NoRestart()
    EndIf
    EndSelect
    WEnd
    EndFunc ;==>_CMD

    [/autoit] [autoit][/autoit] [autoit]

    Func _NoRestart()
    GUIDelete()
    $GUI6 = GUICreate("Ihre Änderungen wurden übernommen.", 510, 90)
    $Icon = GUICtrlCreateIcon(@SystemDir & "\wmploc.dll", -71, 20, 23)
    $Label1 = GUICtrlCreateLabel("Die Änderungen wurden übernommen, ein Neustart des Systems ist nicht erforderlich!", 70, 30)
    $Button1 = GUICtrlCreateButton("OK", 220, 50, 40)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $Button1
    Exit
    EndSelect
    WEnd
    EndFunc ;==>_NoRestart

    [/autoit] [autoit][/autoit] [autoit]

    Func _Error()
    GUIDelete()
    $GUI6 = GUICreate("Es ist ein Fehler aufgetreten.", 510, 110)
    GUISetIcon(@SystemDir & "\wmploc.dll", -41, $GUI6)
    $Icon = GUICtrlCreateIcon(@SystemDir & "\wmploc.dll", -69, 20, 19)
    $Label1 = GUICtrlCreateLabel("Es ist ein Fehler aufgetreten!" & @LF & "Ihre Änderungen konnten nich übernommen werden, da ein Fehler aufgetreten ist!" & @LF & "Vergewissern Sie sich, dass Sie die nötigen Schreibrechte besitzen!", 70, 15)
    $Button1 = GUICtrlCreateButton("OK", 240, 67, 40)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $Button1
    Exit
    EndSelect
    WEnd
    EndFunc ;==>_Error

    [/autoit] [autoit][/autoit] [autoit]

    Func _lnk()
    GUIDelete()
    $GUI7 = GUICreate("Verknüpfungen konfigurieren", 470, 200)
    GUICtrlCreateLabel("Verknüpfungen konfigurieren:", 10, 10)
    RegRead("HKEY_CLASSES_ROOT\lnkfile", "IsShortcut")
    $errori = @error
    $Radio1 = GUICtrlCreateCheckbox("Verknüpfungspfeil anzeigen", 10, 40)
    If $errori = 0 Then
    GUICtrlSetState($Radio1, $GUI_CHECKED)
    Else
    GUICtrlSetState($Radio1, $GUI_UNCHECKED)
    EndIf
    RegRead("HKEY_CLASSES_ROOT\lnkfile", "NeverShowExt")
    $errord = @error
    $Radio2 = GUICtrlCreateCheckbox("Dateiendung ausblenden", 10, 60)
    If $errord = 0 Then
    GUICtrlSetState($Radio2, $GUI_CHECKED)
    Else
    GUICtrlSetState($Radio2, $GUI_UNCHECKED)
    EndIf
    $Icon = GUICtrlCreateIcon(@SystemDir & "\wmploc.dll", -71, 20, 150)
    $Label1 = GUICtrlCreateLabel("Sie können die Optionen für Verknüpfungen verändern," & @LF & "indem Sie Optionen aktivieren/deaktivieren und auf Übernehmen klicken.", 80, 150)
    $Button1 = GUICtrlCreateButton("Übernehmen", 10, 105)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $Button1
    If GUICtrlRead($Radio1) = $GUI_CHECKED Then
    RegWrite("HKEY_CLASSES_ROOT\lnkfile", "IsShortcut", "REG_SZ", "")
    If @error <> 0 Then
    _Error()
    EndIf
    Else
    RegDelete("HKEY_CLASSES_ROOT\lnkfile", "IsShortcut")
    If @error <> 0 Then
    _Error()
    EndIf
    EndIf
    If GUICtrlRead($Radio2) = $GUI_CHECKED Then
    RegWrite("HKEY_CLASSES_ROOT\lnkfile", "NeverShowExt", "REG_SZ", "")
    If @error <> 0 Then
    _Error()
    EndIf
    Else
    RegDelete("HKEY_CLASSES_ROOT\lnkfile", "NeverShowExt")
    If @error <> 0 Then
    _Error()
    EndIf
    EndIf
    _RestartInfo()
    EndSelect
    WEnd
    EndFunc ;==>_lnk

    [/autoit]

    Bei mir funktionieren alle Funktionen, das Programm ist für Windows XP ausgelegt. Zum Ausführen braucht man Admin-Rechte! Über Kommentare, Fehlermeldungen oder Verbesserungsvorschläge würde ich mich freuen!

    Folgende Funktionen bietet das Programm:
    - Message-Box vor Anmeldung für alle Benutzer anzeigen
    - Autostarteintrag in die Run schreiben
    - CMD per Kontextmenü öffnen aktivieren/deaktivieren
    - Verknüpfungspfeil anzeigen/ausblenden
    - Dateiendung bei Verknüpfungen anzeigen/ausblenden

    Hier nochmal als Download:
    autoit.de/wcf/attachment/7011/