; Installation/DeInstallation Launcher für Notepad Ersatz Global $arDest[4] = [ _ @WindowsDir & '\servicepackfiles\i386\', _ @WindowsDir & '\system32\dllcache\', _ @WindowsDir & '\system32\', _ @WindowsDir & '\'] Global $start = 0 If Not FileExists(@WindowsDir & '\servicepackfiles\i386\notepad.exe') Then $start = 1 If $CmdLine[0] > 0 Then Switch $CmdLine[1] Case "/b" _RollBack() ; Schalter '/b' für: RollBack (Originalzustand) Case "/e" _SetAlternate(False) ; Schalter '/e' für: nur neuer Editor EndSwitch Else _SetAlternate(True) EndIf Func _SetAlternate($FULL=True) Dim $alternateEditorPath = '' If $FULL Then Dim $source = '' Do $source = FileOpenDialog("Pfad der Launcher Datei auswählen", @ScriptDir, "(*.exe)") If $source = '' Then If MsgBox(262180, 'Keine Datei ausgewählt', 'Wollen Sie nochmals wählen?') = 7 Then Exit EndIf Until $source <> '' FileCopy(@WindowsDir & '\notepad.exe', @WindowsDir & '\notepad.exe.org') ; Sicherheitskopie Original Local $sourceFile = StringTrimLeft($source, StringInStr($source, '\', 1, -1)) For $i = $start To UBound($arDest) -1 If FileCopy($source, $arDest[$i] & $sourceFile, 1) = 0 Then MsgBox(262160, 'Kopierfehler', 'Die Launcher Datei konnte nicht in den Pfad:' & @LF & _ $arDest[$i] & @LF & @LF & _ 'kopiert werden. Bitte das Programm mit dem "Rollback-Parameter /b" aufrufen.' ) Exit EndIf Next EndIf Do $alternateEditorPath = FileOpenDialog("Pfad des alternativen Editors auswählen", @HomeDrive, "(*.exe)") If $alternateEditorPath = '' Then If MsgBox(262180, 'Keine Datei ausgewählt', 'Wollen Sie nochmals wählen?') = 7 Then Exit EndIf Until $alternateEditorPath <> '' If RegWrite('HKEY_LOCAL_MACHINE\SOFTWARE\AlternateEditor', 'FullPath', "REG_SZ", $alternateEditorPath) = 0 Then MsgBox(262160, 'Registryfehler', 'Der Schlüssel:' & @LF & _ 'HKEY_LOCAL_MACHINE\SOFTWARE\AlternateEditor, FullPath, REG_SZ, ' & $alternateEditorPath & @LF & _ 'konnte nicht in die Registry geschrieben werden.' & @LF & _ 'Bitte das Programm mit dem "Rollback-Parameter /b" aufrufen.' ) Exit Else MsgBox(262208, 'Erfolg', 'Alle Einträge wurden erfolgreich ausgeführt.') EndIf EndFunc ;==>_SetAlternate Func _RollBack() If Not FileExists(@WindowsDir & '\notepad.exe.org') Then MsgBox(262160, 'Dateifehler', 'Die Sicherung der Originaldatei:' & @LF & _ @WindowsDir & '\notepad.exe.org' & @LF & _ 'ist nicht vorhanden!' & @LF & _ 'Eine Wiederherstellung ohne diese Datei ist nicht möglich!') Exit EndIf For $i = $start To UBound($arDest) -1 If FileCopy(@WindowsDir & '\notepad.exe.org', $arDest[$i] & 'notepad.exe', 1) = 0 Then MsgBox(262160, 'Kopierfehler', 'Die Original Datei konnte nicht in den Pfad:' & @LF & _ $arDest[$i] & @LF & _ 'kopiert werden.' & @LF & @LF & _ 'Bitte kopieren Sie die Original "notepad.exe" in GENAU dieser Reihenfolge' & @LF & _ 'in die folgenden Pfade:' & @LF & _ @WindowsDir & '\servicepackfiles\i386\ (sofern vorhanden)' & @LF & _ @WindowsDir & '\system32\dllcache\' & @LF & _ @WindowsDir & '\system32\' & @LF & _ @WindowsDir & '\') Exit EndIf Next RegDelete('HKEY_LOCAL_MACHINE\SOFTWARE\AlternateEditor') MsgBox(262208, 'Erfolg', 'Der Original Windows-Editor "notepad"' & @LF & _ 'ist ab sofort wieder Standardeditor.') EndFunc ;==>_RollBack