Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Ändern von Textdateien in geschützten Verzeichnissen unter Windows 7 über Kontextmenüeintrag des Lieblingseditors

Anleitung Microsoft Windows Tools

Mitglied: Friemler

Friemler (Level 2) - Jetzt verbinden

22.12.2010, aktualisiert 23.12.2010, 17024 Aufrufe, 12 Kommentare, 1 Danke

Wenn man unter Windows 7 häufiger Textdateien ändern muss, die sich in irgendwelchen vom System geschützten Verzeichnissen befinden (z.B. C:\Windows\System32\Drivers\etc\hosts), wird es auf die Dauer lästig, dass man die Dateien nach dem Ändern nicht einfach speichern kann, da man normalerweise keine Schreibberechtigung in diesen Verzeichnissen hat und der gestartete Editor somit auch nicht. Man kann also nur z.B. auf dem Desktop speichern und die Datei danach händisch ins Zielverzeichnis kopieren/verschieben, weil dann die UAC-Abfrage kommt, durch deren Bestätigung man die Aktion zulassen kann. Oder den Editor mit Administratorrechten starten und die Datei(en) über das Dateimenü manuell laden und bearbeiten. Dann ist auch ein Abspeichern in geschützten Verzeichnissen möglich. Bequem wäre ein Eintrag im Kontextmenü des Explorers für alle Dateien, über den man seinen Lieblingseditor mit Administratorrechten starten kann und der dann die selektierte(n) Datei(en) lädt.

Um diese Aufgabe zu lösen braucht man folgendes:

  • Einen Eintrag im Kontextmenü, der
  • ein Batchfile startet, das
  • eine Aufgabe in der Aufgabenplanung startet, die
  • ein Batchfile mit höchsten Rechten startet, das wiederum den Editor startet.

Don't Panic!

Der Umweg über zwei Batchfiles ist nötig, weil man einer Aufgabe keine Parameter übergeben kann. Das erste Batchfile schreibt deshalb den/die Namen der zu öffnenden Datei(en) in eine temporäre Datei, die vom zweiten Batchfile ausgelesen wird.

Dabei kommt aber noch ein Stolperstein ins Spiel. Wenn man im Explorer mehrere Dateien selektiert und dann über den Kontextmenüeintrag das erste Batchfile aufruft, übergibt der Explorer nicht etwa eine Liste aller Dateien, sondern führt den Aufruf für jede Datei einzeln durch. Ergebnis wäre, das für jede ausgewählte Datei eine Instanz des Editors läuft. Sehr unkomfortabel im Handling. Aus diesem Grund müssen noch besondere Maßnahmen ergriffen werden, auf die ich bei der Vorstellung des entsprechenden Batchfiles eingehen werde.

Die Aufgabe in der Aufgabenplanung dient dazu, das gewünschte Programm (hier ein Skript) mit Administratorrechten zu starten. Alle von diesem Skript gestarteten Programme erhalten dann ebenfalls Administratorrechte. Auch dabei gibt es etwas zu beachten. Startet man in der Aufgabe einfach CMD.EXE mit dem Parameter /C "PfadUndNameDesZweitenBatchfiles.cmd", wird das Editorfenster im Hintergrund geöffnet. Auch lästig. Aber auch das lässt sich umgehen.



Here we go!

Da ich den Editor TextPad V5 verwende, gebe ich überall Pfade zu diesem Programm an. Wer einen anderen Editor verwendet, kann das hier beschriebene Verfahren auch verwenden, muss aber entsprechende Anpassungen bei den Pfaden vornehmen. Bei einem 64Bit-Windows ist der Pfad zum Programme-Verzeichnis von Program Files auf Program Files (x86) zu ändern (außer, der verwendete Editor liegt auch in einer 64Bit-Version vor).


Der Kontextmenüeintrag

Fangen wir mit dem Kontextmenüeintrag an. Dazu öffnet man über Start->Ausführen...->regedit den Registryeditor und navigiert zum Schlüssel HKEY_CLASSES_ROOT\*\shell. In diesem Schlüssel kann man Kontextmenüeinträge für alle Dateitypen erstellen, deshalb der Stern (*) im Schlüsselpfad.

Über Rechtsklick auf shell->Neu->Schlüssel erstellt man einen neuen Unterschlüssel und gibt ihm z.B. den Namen TextPad im AdminMode. Dieser Text taucht später im Kontextmenü auf.

Über Rechtsklick auf den neu erstellten Schlüssel->Neu->Schlüssel legt man unter diesem Schlüssel einen Unterschlüssel an, dem man den Namen Command gibt. Dieser Name muss so lauten!

Jetzt macht man in der rechten Fensterhälfte einen Doppelklick auf den Eintrag Standard und trägt in der erscheinenden Dialogbox im Eingabefeld Wert folgendes ein:
C:\Windows\System32\cmd.exe /c ""C:\Program Files\TextPad 5\TextPadAdminMode.cmd" "%1""
3668f5a8c73784906435c21868fa1eb4 - Klicke auf das Bild, um es zu vergrößern

Hier ist der Pfad zum Batchfile TextPadAdminMode.cmd angegeben, das ich im Installationsverzeichis von TextPad abgelegt habe. Wer einen anderen Editor verwendet oder das Batchfile an einem anderen Ort speichern möchte, muss das entsprechend anpassen. Damit ist dieser Teil abgeschlossen.


Das erste Batchfile

Jetzt erstellt man am besten auf dem Desktop folgendes Batchfile, da das Verzeichnis C:\Program Files und seine Unterverzeichnisse auch nur für Programme mit Administratorrechten beschreibbar sind:
01.
@echo off & setlocal 
02.
 
03.
set "OtherInstance=0" 
04.
 
05.
if exist "%TEMP%\TextPadParameters.txt" ( 
06.
  set "OtherInstance=1" 
07.
08.
 
09.
echo %1>>"%TEMP%\TextPadParameters.txt" 
10.
 
11.
if %OtherInstance% equ 0 ( 
12.
  schtasks /run /tn "Meine Aufgaben\TextPadAdminMode" 
13.
)
Der übergebene Dateiname ist in der Variablen %1 gespeichert. Er wird in jedem Fall an die Datei %TEMP%\TextPadParameters.txt angehängt. Der Befehl SCHTASKS wird aber nur ausgeführt, wenn die Datei %TEMP%\TextPadParameters.txt beim Start des Skripts noch nicht vorhanden war. Damit wird der oben erwähnte Stolperstein umgangen, dass nämlich der Explorer bei mehreren ausgewählten Dateien das Batchfile für jede Datei separat aufruft. Es wird also erreicht, dass SCHTASKS nur für die erste Datei ausgeführt wird, bei allen anderen landet lediglich deren Pfad und Name in der temporären Datei %TEMP%\TextPadParameters.txt. SCHTASKS startet die Aufgabe, die hinter dem Parameter /TN angegeben wird. Wie man sieht, liegt diese in einem "Verzeichnis" Meine Aufgaben, doch dazu später mehr. Nachdem man das erstellte Batchfile nach C:\Program Files\TextPad 5\TextPadAdminMode.cmd kopiert und dabei die Abfrage der UAC bejaht hat, ist dieser Teil abgeschlossen.


Das zweite Batchfile

Weil wir gerade dabei sind, erstellen wir jetzt noch das Batchfile StartTextPad.cmd, zunächst ebenfalls auf dem Desktop, um es nach Fertigstellung händisch nach C:\Program Files\TextPad 5\StartTextPad.cmd zu kopieren. [Edit] 23.12.2010: Skript auf Anregung von bastla (und Mathe172) etwas geändert [/Edit]
01.
@echo off & setlocal 
02.
 
03.
set "Files=" 
04.
 
05.
for /f "usebackq delims=" %%f in ("%TEMP%\TextPadParameters.txt") do call :ProcessFile "%%~f" 
06.
 
07.
del "%TEMP%\TextPadParameters.txt" 2>NUL 
08.
start "" "C:\Program Files\TextPad 5\TextPad.exe" %Files% 
09.
 
10.
exit /b 
11.
 
12.
 
13.
:ProcessFile 
14.
  set "Files=%Files% %1" 
15.
exit /b
Das Skript liest die Datei %TEMP%\TextPadParameters.txt Zeile für Zeile ein und setzt aus dem Inhalt der Zeilen die Variable Files zusammen, die somit die Pfade und Namen aller zu öffnenden Dateien enthält, jeweils in Anführungszeichen eingeschlossen und durch ein Leerzeichen voneinander getrennt. Der Inhalt dieser Variablen wird an TextPad als Parameterliste übergeben. Vorher wird die Datei %TEMP%\TextPadParameters.txt allerdings noch gelöscht, sonst funktioniert der Aufruf des Editors im AdminMode das nächste Mal nicht mehr.


Die Aufgabe in der Aufgabenplanung

So, jetzt fehlt noch die Aufgabe in der Aufgabenplanung, um das Batchfile C:\Program Files\TextPad 5\StartTextPad.cmd zu starten. Dazu zunächst mal über das Startmenü die Aufgabenplanung öffnen. Dort macht man im linken Panel des Fensters einen Rechtsklick auf Aufgabenplanungsbibliothek und wählt aus dem Kontextmenü Neuer Ordner.... In der Dialogbox gibt man dem Ordner den Namen Meine Aufgaben. Dann einen Rechtsklick auf den neu erstellten Ordner machen und Aufgabe erstellen... aus dem Kontextmenü wählen. Welche Einstellungen auf den Registerkarten der nun erscheinenden Dialogbox zu machen sind, zeigen die folgenden Bilder.

3c9a003e1d63d51445f5d393f5f8b517 - Klicke auf das Bild, um es zu vergrößern
Registerkarte Allgemein

Durch den Haken bei Mit höchsten Privilegien ausführen wird das Programm, was durch die Aufgabe gestartet wird, mit Administratorrechten, aber unter dem Benutzerkonto des weiter oben eingetragenen Benutzers ausgeführt.


8eafa4220c7d863b97797b9715bcb08e - Klicke auf das Bild, um es zu vergrößern
Registerkarte Aktionen

Im Eingabefeld Argumente hinzufügen (optional): gibt man folgendes ein:
/c start /min cmd /c "C:\Program Files\TextPad 5\StartTextPad.cmd"
Dadurch, dass aus CMD.EXE heraus mit START /MIN CMD /C ... nochmals eine Instanz von CMD.EXE gestartet wird, die das Batchfile C:\Program Files\TextPad 5\StartTextPad.cmd ausführt, liegt das Editorfenster zum Schluss im Vordergrund.



0864766eb37ec11a24f7d76d8e6128ea - Klicke auf das Bild, um es zu vergrößern
Registerkarte Bedingungen


ae76bb814fd0a6cb62e2caadebd1409e - Klicke auf das Bild, um es zu vergrößern
Registerkarte Einstellungen


Nachdem die Einstellungen vorgenommen wurden, alles durch Klick auf OK speichern. Das Hauptfenster der Aufgabenplanung sollte dann folgendes zeigen:

6d08477316212391255400fb93d92ed5 - Klicke auf das Bild, um es zu vergrößern



Test

Wenn jetzt alles geklappt hat, sollte im Explorer im Kontextmenü jeder Datei der Eintrag TextPad im AdminMode auftauchen. Wenn eine oder mehrere Dateien ausgewählt wurden, werden diese durch einen Klick auf den Eintrag im Editor geöffnet. Wie man bei Dateien wie der C:\Windows\System32\Drivers\etc\hosts sehen kann, lassen sie sich nun auch mit dem Editor abspeichern.



Gruß
Friemler
Mitglied: mathe172
23.12.2010 um 19:45 Uhr
Hallo Friemler!

Zuerst mal einen Glückwunsch für die Anleitung!

In der Taskleiste liegt allerdings während der Laufzeit von TextPad ein minimiertes Konsolenfenster, was sich leider nicht vermeiden lässt. Wen es stört, der kann es problemlos einfach schließen.
Bei mir funktioniert es mit:
01.
start "C:\Program Files\TextPad 5\TextPad.exe" %Files%


Mathe172
Bitte warten ..
Mitglied: Friemler
23.12.2010 um 22:51 Uhr
Hallo Mathe172,

danke für den Hinweis, manchmal sieht man den Wald vor lauter Bäumen nicht! Obwohl es GENAU so, wie Du es beschreibst, bei mir NICHT funktioniert. WAS funktioniert ist
start "" "C:\Program Files\TextPad 5\TextPad.exe" %Files%
Ich vermute, Du hast den Programmpfad beim Testen nicht in Anführungszeichen gesetzt, ich schon, weil er ja auch Leerzeichen enthält. Wenn dann der Parameter für den Fenstertitel fehlt, kam es bei mir zu Fehlfunktionen.

Gruß
Friemler
Bitte warten ..
Mitglied: mathe172
23.12.2010 um 23:31 Uhr
Hallo Friemler,

Ich vermute, Du hast den Programmpfad beim Testen nicht in Anführungszeichen gesetzt, ich schon, weil er ja auch Leerzeichen enthält. Wenn dann der Parameter für den Fenstertitel fehlt, kam es bei mir zu Fehlfunktionen.
Genau so war es (ich hab als Test einfach Notepad.exe eingegeben)

WAS funktioniert ist
start "" "C:\Program Files\TextPad 5\TextPad.exe" %Files%
...Und so lernt man wieder dazu (hatte es glaube ich mal vor laaaaanger Zeit gewusst )

Mathe172)
Bitte warten ..
Mitglied: 96394
26.12.2010 um 19:32 Uhr
Mein "Lieblingseditor" steht als Ziel in einer Verknüpfung, die ich unter "Erweitert" als Administrator ausführen lasse und in den SendTo-Ordner gepackt habe

Die Taskmanager- und Registry-Erweiterungen kann man sich so einfach sparen.
Bitte warten ..
Mitglied: Friemler
26.12.2010 um 23:49 Uhr
Hallo papperlapapp,

Zitat von 96394:
Mein "Lieblingseditor" steht als Ziel in einer Verknüpfung, die ich unter "Erweitert" als Administrator
ausführen lasse und in den SendTo-Ordner gepackt habe

... und deshalb musst Du im Kontextmenü ziemlich weit nach unten, um "Senden an ..." zu erreichen, noch kurz warten, bis sich dieses Untermenü öffnet und dort nochmal bis zum Icon Deines Editors navigieren. Wenn Du die Maus ungenau führst, schließt sich das Untermenü dummerweise auch noch. Für mich keine Alternative.

Gruß
Friemler
Bitte warten ..
Mitglied: 96394
27.12.2010 um 00:22 Uhr
Hallo, Friemler,.

jeder verfummelt sich eben sein System so gut er kann. An Stelle von tiefgreifenden Eingriffen in Registry und ähnlichen Systemtools und seitenlangen Anleitungen bevorzuge ich einfachste Lösungen, die mir Windows 7 bietet.
Probleme beim Finden der passenden Kontextmenüeinträge hatte ich bisher noch nicht, außerdem ist mein System so schnell, dass ich keinerlei Verzögerungen beim Öffnen von Untereinträgen ertragen müsste.
Die Reihenfolge der Einträge in SendTo-Kontext könnte man sich z. B. auch durch passende Bezeichnungen etwas flexibel gestalten.

Es muss ja für dich keine Alternative sein, aber vielleicht gefällt anderen User, die hier landen, meine einfache Lösungsmöglichkeit.

Gruß
papperlapapp
Bitte warten ..
Mitglied: Friemler
27.12.2010 um 10:48 Uhr
Moin papperlapapp,

Zitat von 96394:
... außerdem ist mein System so schnell, dass ich keinerlei Verzögerungen beim Öffnen von Untereinträgen ertragen müsste.

Die Verzögerung ist mit Absicht in den Explorer eingebaut, lässt sich aber auch irgendwo abschalten.

Gruß
Friemler
Bitte warten ..
Mitglied: 96533
07.01.2011 um 00:23 Uhr
Hi!

Zu später Stunde gucke ich mir Deine schöne Idee an und möchte sie noch entscheidend vereinfachen.
Und zwar schon bereits nach dem Kontextmenüeintrag kann Schluss sein. Modifiziere ich den auf...
01.
d:\tools\pstools\psexec -d -u administrator -p Kennwort notepad "%1"
...dann läuft das ohne Tasks und sonstiges Brimborium.

2 Dinge muss man jedoch zuvor erledigen: psexec runterladen (http://technet.microsoft.com/de-de/sysinternals/bb896649) und ablegen (hier unter d:\tools\pstools) und das lokale Administratorkonto aktivieren und mit einem Kennwort versehen.

Was diese Methode ausmacht, ist die Tatsache, dass für das Konto Administrator keine UAC-Abfrage kommt (es ist das einzige Konto, für das dies gilt), es arbeitet immer mit vollen Rechten und dass psexec im Gegensatz zu runas das Kennwort übergeben kann.
Bitte warten ..
Mitglied: Friemler
07.01.2011 um 11:22 Uhr
Hallo Lassie,

sicherlich, unter Verwendung externer Tools lassen sich viele Dinge einfacher lösen. Mein Bestreben ist es jedoch, solche Problemchen mit Bordmitteln zu lösen. Da das in diesem Fall möglich ist, habe ich diesen Weg gewählt. Eine UAC-Abfrage erscheint dabei übrigens auch nicht.

Deine Methode hat auch zwei kleine Haken:
  • Das Programm, was mit PsExec gestartet wird, läuft unter dem Benutzerkontext des Kontos Administrator. Da Programme unter Windows 7 ihre Einstellungen in Dateien ablegen, die unter dem Benutzerprofil abgespeichert werden, werden diese Einstellungen bei der PsExec-Methode nicht gefunden und deshalb die Default-Einstellungen verwendet. In diesem Fall geht es zwar nur um einen Texteditor, aber Notepad, der kaum relevante Einstellungsmöglichkeiten besitzt, verwende ich nur im Not(e)fall .
  • Das Administratorpasswort wird in der Registry unter dem Kontextmenüeintrag im Klartext gespeichert.

Was Du und sinngemäß der (abgemeldete) User 96394 (ehemaliger Nickname papperlapapp) als "Brimborium" bezeichnen, ist für mich ein Weg, um ein tieferes Verständnis für Windows zu bekommen.

Gruß
Friemler
Bitte warten ..
Mitglied: 96533
07.01.2011 um 11:34 Uhr
Kann ich nachvollziehen.

Haken sind das nicht wirklich. Das Adminkennwort in der Registry kannst Du schützen, falls Du Angst hast, dass andere auf dem Rechner rummachen, einfach die Leserechte für den Key nur Deinem Nutzer geben (nicht etwa der Admingruppe, da nicht elevated).
Psexec betrachte ich eh als must-have, das zählt für mich zu den Bordmitteln für Admins - aber prinzipiell stimme ich Dir zu.

Dass die Einstellungen für Texteditoren nun kriegsentscheidend sind, glaube ich nicht wirklich, aber da hast Du Recht. Zur Not als Admin
anmelden und den Texteditor konfigurieren - fertig. Oder per psexec-Parameter das eigene Profil verwenden.

Mir ging es nur darum, einen Weg zu zeigen, wie man das gleiche Ziel in 1 Minute erreicht.
Bitte warten ..
Mitglied: itebob
12.06.2016 um 20:21 Uhr
Die Taskmanager- und Registry-Erweiterungen kann man sich so einfach sparen
diese Lösung gefällt mir. Ein gestarteter "Lieblingseditor" gehört zum Inventar auf meinem Desktop.

Aber kann jemand mir diese Lösung
Verknüpfung, die ich unter "Erweitert" als Administrator ausführen lasse und in den SendTo-Ordner gepackt habe

etwas detaillierter erklären?
Bitte warten ..
Mitglied: Friemler
12.06.2016, aktualisiert um 21:53 Uhr
Hallo itebob,

Zitat von itebob:

Aber kann jemand mir diese Lösung
Verknüpfung, die ich unter "Erweitert" als Administrator ausführen lasse und in den SendTo-Ordner gepackt habe

etwas detaillierter erklären?

Da der User, der die obige Aussage getroffen hat, sich mittlerweile abgemeldet hat, beantworte ich Dir die Frage.

  1. Verknüpfung auf den Texteditor erstellen und einen passenden Namen vergeben.
  2. Rechtsklick auf die Verknüpfung -> Eigenschaften -> Erweitert -> Haken bei "Als Administrator ausführen".
  3. Danach kannst Du die Verknüpfung nach C:\Users\<Benutzername>\AppData\Roaming\Microsoft\Windows\SendTo kopieren. Dadurch entsteht im Menü "Senden an" ein Eintrag mit dem unter 1. vergebenen Namen.

Gruß
Friemler


[EDIT]
Falls man Notepad++ als "Lieblingseditor" verwendet, ist diese Anleitung inzwischen obsolet. Für diesen Editor gibt es das Plugin SaveAsAdmin, das es ermöglicht, Notepad++ ganz normal zu starten und beim Speichern von Dateien bei Bedarf automatisch erhöhte Rechte anzufordern (UAC-Prompt erscheint).
[/EDIT]
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...