highend01
Goto Top

Batch files als Administrator starten - zusätzliches CMD Fenster

Hi,

ich lasse einige meiner Batchdateien immer mit Administratorberechtigungen laufen (via Registry Eintrag):

REG ADD "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "<pfad>\<name>.bat" /t REG_SZ /d "RUNASADMIN" /f  

In einer Batchdatei verwende ich z.B..:

REM ### Check if old task is still running #################
tasklist /fi "IMAGENAME eq rsync.exe" | findstr /i /c:"rsync.exe" >NUL 2>NUL  
IF %errorlevel%==0 taskkill /f /fi "IMAGENAME eq rsync.exe" >NUL 2>NUL  

Wenn ich diese Batchdatei (die bereits in der Registry mit Admineintrag versehen ist) per Rechtsklick und "Als Administrator ausführen" starte
ist alles ok, es öffnet sich ein einziges CMD Fenster, welches die Befehle _inklusive_ der pipe an findstr auch nur in diesem ausführt.

Wenn ich das Ganze aber einfach nur per Doppelklick mache (es wird ja trotzdem mit erhöhten Berechtigungen ausgeführt), dann öffnet sich das
erste CMD Fenster, startet aber für das findstr ein Zusätzliches, was so nicht gewollt ist, weil das Script an dieser Stelle dann hängen bleibt.

Ist es möglich, das Ganze umzuschreiben oder anders zu gestalten, damit es nach wie vor mit administrativen Rechten läuft, aber beim Doppelklick
auch nur mit einem DOS Fenster arbeitet und damit nicht hängenbleibt?

Danke und Gruß.

Content-ID: 169604

Url: https://administrator.de/contentid/169604

Ausgedruckt am: 18.12.2024 um 19:12 Uhr

DerWoWusste
DerWoWusste 12.07.2011, aktualisiert am 18.10.2012 um 18:47:31 Uhr
Goto Top
Hi.

Hab's mir angeschaut und das Problem nachvollzogen. Keine Ahnung, was MS da falsch macht.
Wäre es eine Lösung, über einen Rechtklick auf die Datei zu gehen und einen Kontextmenüeintrag (hier: "Admin") zu nutzen, der das Adminkennwort übergibt? [Das Kennwort würde in der Registry stehen, man könnte jedoch die Leserechte auf den Schlüssel einschränken, falls andere den Rechner nutzen.]

--
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\Admin]

[HKEY_CLASSES_ROOT\*\shell\Admin\Command]
@="d:\\tools\\pstools\\psexec -d -u administrator -p Kennwort \"%1\""
--

Vorher müsste der lokale Admin aktiviert werden, das Kennwort auf "Kennwort" gesetzt werden und psexec.exe in den Pfad (hier d:\tools\pstools\) gelegt werden.

So funktioniert es und es kommt auch keine UAC-Abfrage.
Wenn es per Doppelklick gehen muss, bleiben zwei weitere Möglichkeiten: shims oder Tasks, beide siehe Batch dauerhaft als Administrator ausführen (windows7)
Highend01
Highend01 13.07.2011 um 14:07:08 Uhr
Goto Top
Hi DerWoWusste,

verdammt, ein zweites mal auf den "Antworten" Link geklickt und mein ganzes Geschreibsel hier war weg *sigh*

Kurzfassung:

Danke für deine Vorschläge!

Shims muss ich mir noch genauer ansehen (hab's gestern Abend nur noch kurz installiert (inkl. SQL Server)) und konnte keine .bat Dateien im Filerequester auswählen (der lässt ausschließlich .exe Dateien zu). Hängt u.a. davon ab, ob nach dem Erstellen der shims z.B. wirklich noch ein SQL Server (lokal / oder im Netzwerk) laufen muss, etc.

Die anderen Vorschläge sind für das was ich möchte (in diesem Fall Bequemlichkeit beim Doppelklick) nicht realisierbar (die Tasks Variante erfordert ja zusätzlich immer noch eine weitere .bat (oder kompliert eine .exe Datei), die die ursprüngliche ja erst noch starten muss) und einen weiteren Rechtsklick Eintrag benötige ich nicht, da könnte ich auch gleich die Variante "Als Administrator ausführen" benutzen.

Was ich mir vielleicht mal als Alternative anschaue, ist das verbiegen des reg-Eintrages für .bat Endungen auf die von dir vorgeschlagene psexec Variante. Mal schauen, ob das vernünftig funktioniert.

Ich melde mich hier noch mal zurück, sobald ich mich für etwas ädequates entschieden hab.

Danke und Gruß,
highend
DerWoWusste
DerWoWusste 13.07.2011 um 14:29:48 Uhr
Goto Top
einen weiteren Rechtsklick Eintrag benötige ich nicht, da könnte ich auch gleich die Variante "Als Administrator ausführen" benutzen
Nicht ganz: psexec nutzt das Konto Administrator, somit kommt keine UAC-Abfrage. Ist schon besser als das eingebaute.

Wegen ACT5: kein SQL-Server nötig. Du musst den Compatibility Administrator starten, nicht den Manager. Dass der keine .bat kann, hatte ich leider glatt vergessen.
Highend01
Highend01 13.07.2011 um 14:37:51 Uhr
Goto Top
<quote>
Nicht ganz: psexec nutzt das Konto Administrator, somit kommt keine UAC-Abfrage.
</quote>

Führt die .bat Datei also nicht nur mit seinen Rechten, sondern auch innerhalb seiner Umgebung aus (soll heißen: ein set im dos prompt würde bei %username% "Administrator" bedeuten)?

<quote>
Dass der keine .bat kann, hatte ich leider glatt vergessen.
</quote>

Dann ist das Ganze eh hinfällig face-smile
DerWoWusste
DerWoWusste 13.07.2011 um 15:29:16 Uhr
Goto Top
soll heißen: ein set im dos prompt würde bei %username% "Administrator" bedeuten
So ist es.
USERNAME=Administrator
USERPROFILE=C:\Users\Administrator
Highend01
Highend01 13.07.2011 um 15:33:08 Uhr
Goto Top
Ok, dann hat sich auch diese Lösung gerade verabschiedet.

Das snippet aus dem Script ist z.B. für Rsync geschrieben und das legt (bei mir) Wert darauf, dass es nur die Verzeichnisse des jeweils angemeldeten Benutzers entsprechend seinen Voreinstellungen synchronisiert. Mit anderen Kontodaten ausführen ist da nicht drin.
DerWoWusste
DerWoWusste 13.07.2011 um 15:41:07 Uhr
Goto Top
psexec kennt auch Schalter für Profile... -e sollte passen.
-e Does not load the specified account's profile.