Batchdatei als Administrator ausführen funktioniert nicht und was dies mit dem &-Zeichen im Benutzernamen zu tun hat


Windows hat so seine Eigenheiten. Aktuell bin ich mal wieder über eine solche gestolpert, wo man sich fragt: Was geht da ab? Kurz zur Geschichte, ein Kunde hatte Probleme mit dem Adobe Reader Update: https://newyear2006.wordpress.com/2014/07/03/adobe-reader-installation-meldet-umgltiges-laufwerk-und-bricht-die-installation-ab/. Meine Antwort darauf war, eine Batchdatei anzulegen und diese mit Adminrechten auszuführen. Nur funktionierte die Variante nicht. Nach einigem hin und her wurde es dann klar, dass keinerlei Batchdatei des Kunden, welche über den Windows Explorer mit rechter Maustaste und “Als Administrator ausführen” angefordert wurde, klappte.

Dazu wurde eine einfach Test.BAT-Batchdatei im Benutzer-Verzeichnis C:\USERS\M&M geschrieben:

@ECHO Hallo
PAUSE

Also nichts weltbewegendes. Führt man diese Batchdatei in der Commandline aus, funktioniert alles wie gewünscht, ob mit oder ohne Adminrechte. Führt man die Batchdatei jedoch im Windows Explorer aus, funktioniert nur die Variante ohne Adminrechte. Bei der Variante mit den Adminrechten wird zwar nach dem Zulassen von CONSENT.EXE mit dem bekannten UAC-Dialog gefragt aber es wird effektiv nichts ausgeführt.

Bei der näheren Analyse mittels Procmon.EXE fiel dann folgendes auf, der Punkt  wo der CMD.EXE-Prozess erzeugt wird, wird die richtige Commandline übergeben:

Parent PID: 1996, Command line: "C:\Windows\System32\cmd.exe" /C "C:\Users\M&M\Test.bat" , …

Einige Zeilen später, wo die .BAT-Datei auf Vorhandensein geprüft wird, findet sich auf einmal diese Zeile:

QueryDirectory  C:\Users\M.*

Wo doch der Benutzer M&M heißt und nicht M.*!!

Und genau da entsteht nun das Problem, so dass wieder einige Zeilen später, der Versuch die Batchdatei zu lesen ins Leere läuft:

CreateFile C:\Windows\system32\M\Test.bat PATH NOT FOUND

Echt interessant! D. h. hier wird der Pfadname quasi in zwei Teile aufgelöst, einmal in C:\Users\M und einmal in M\Test.Bat, was eigentlich C:\Users\M&M\Test.Bat lauten sollte.

Dies bedeutet, dass keine Batchdatei des Benutzers M&M als Administrator ausgeführt werden kann! Sobald man aber hergeht und z. B. ein Verzeichnis C:\TestDir anlegt, dort die Test.BAT-Datei ablegt und diese als Administrator ausführt klappt wieder alles.

Was lernen wir daraus: Verwende unter Windows niemals einen Benutzernamen mit einem &-Zeichen!

Dieses Phänomen tritt von Windows 7 bis Windows 10 auf, wahrscheinlich sind aber generell auch ältere Versionen davon betroffen. Man könnte es zwar durch Escapen des &-Zeichen lösen aber im Punkt bei “Ausführen als Administrator” sind einem die Hände gebunden. Hier wird das Escapen beschrieben: http://www.robvanderwoude.com/escapechars.php.

2 Antworten to “Batchdatei als Administrator ausführen funktioniert nicht und was dies mit dem &-Zeichen im Benutzernamen zu tun hat”

  1. Cam Ashton Says:

    Hi, I stumbled across this post and I see that you have seen the document saying that you can put „^&“ (without quotes) in your batch file but due to the username being „m & m“ (with spaces) this actually poses two problems.

    The easiest way to fix this is just to encompass the path in double quotes. This applies to whenever there is a space or special character that would normally be used as a command in a batch file or command. Usually the „&“ would be used to:

    Run command A & Run command B.
    e.g. echo The current user is: & echo %USERNAME%

    Hopefully this helps if you are still having problems and haven’t solved this already. As a general rule though I would advise to avoid giving usernames with „&“ in as this can have knock on effects in other places as well and in all likelyhood is the reason you are having the problem with Acrobat Reader in the first place.

    I’m hoping I have understood the problem correctly and haven’t got the wrong end of the stick. Especially becuase I have used Google Translate to read your post and have also used it to write this message.

    If I can be of anymore help or if this doesn’t make sense please don’t hesitate to get in touch

    Regards,
    Cam

  2. Cam Ashton Says:

    Hallo, stolperte ich über dieses Thema und ich sehe, dass Sie das Dokument, dass Sie in Ihrem Batch-Datei (mit Leerzeichen) setzen kann „^ &“ (ohne Anführungszeichen), aber aufgrund der Benutzername als „m & m“ gesehen haben, tatsächlich zwei Probleme.

    Der einfachste Weg, dies zu beheben ist, nur um den Pfad in Anführungszeichen einschließen. Dies gilt immer dann, wenn ein Leer- oder Sonderzeichen, die normalerweise als Befehl in einer Batchdatei oder Befehl verwendet werden würde. Normalerweise ist die „&“ würde zu verwenden:

    Fahrbefehl A & Run Befehl B.
    z.B. echo Der aktuelle Benutzer ist: & echo% USERNAME%

    Hoffentlich hilft, wenn Sie immer noch Probleme haben und nicht bereits gelöst dies. Als allgemeine Regel gilt, obwohl ich würde Ihnen raten, zu verhindern, dass Benutzernamen mit „&“ in da dies einen Dominoeffekten in anderen Orten, wie gut und aller Wahrscheinlichkeit nach ist der Grund, die Sie haben, das Problem mit dem Acrobat Reader in den ersten Platz.

    Ich hoffe, ich habe das Problem richtig verstanden und nicht die falsche Ende des Stockes bekam. Besonders becuase ich verwendet habe Google Translate, um Ihren Beitrag zu lesen und auch benutzt, um diese Nachricht zu schreiben.

    Wenn ich Ihnen mehr sein zu helfen, oder wenn dies nicht sinnvoll setzen Sie sich bitte in Kontakt zu treten

    Grüße,
    Cam

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s


%d Bloggern gefällt das: