;==============================================================
;Scripted by xp_fan from autoit.de
;==============================================================
#include <GUIConstantsEx.au3>

#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)

GUISetState(@SW_SHOW)





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

Func _ChangeMessages()
	GUIDelete($GUI1)
	$GUI2 = GUICreate("Message-Box vor der Anmeldung konfigurieren", 490, 200)
	GUISetState(@SW_SHOW)

	$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)

	While 1
		$msg = GUIGetMsg()
		Select
			Case $msg = $GUI_EVENT_CLOSE
				Exit
			Case $msg = $Button1
				$Reg3 = GUICtrlRead($Input3)
				$Reg4 = GUICtrlRead($Input4)

				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

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)

	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

EndFunc   ;==>_RestartInfo

Func _CreateRun()
	GUIDelete($GUI1)
	$GUI3 = GUICreate("Autostarteintrag (Run) hinzufügen", 490, 200)
	GUISetState(@SW_SHOW)

	$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)

	$Button1 = GUICtrlCreateButton("Eintrag hinzufügen", 10, 70, 100, 20)

	While 1
		$msg = GUIGetMsg()
		Select
			Case $msg = $GUI_EVENT_CLOSE
				Exit
			Case $msg = $Button1
				$I1 = GUICtrlRead($Input5)
				$I2 = GUICtrlRead($Input6)

				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

Func _CMD()
	GUIDelete($GUI1)
	$GUI4 = GUICreate("CMD per Kontextmenü öffnen", 490, 180)
	GUISetState(@SW_SHOW)

	$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)

	RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\cmd", "")
	$cmd_error = @error

	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

	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

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)

	While 1
		$msg = GUIGetMsg()
		Select
			Case $msg = $GUI_EVENT_CLOSE
				Exit
			Case $msg = $Button1
				Exit
		EndSelect
	WEnd
EndFunc   ;==>_NoRestart

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)

	While 1
		$msg = GUIGetMsg()
		Select
			Case $msg = $GUI_EVENT_CLOSE
				Exit
			Case $msg = $Button1
				Exit
		EndSelect
	WEnd
EndFunc   ;==>_Error

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)

	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
