![]() |
Problem mit ParamStr, Leerzeichen und UAC
Ich habe hier ein verwirrendes Problem:
Beim Aufrufen meiner Anwendung mit einem von Anführungszeichen umschlossenen Parameter mit Leerzeichen, wird dieser per ParamStr unterschiedlich ausgewertet, je nachdem ob eine UAC-Abfrage erfolgte oder nicht. Ich breche das Problem mal herunter: Die Anwendung erfordert Admin-Rechte, was per Manifest korrekt festgelegt ist. D.h. beim Aufrufen der exe erfolgt die UAC-Abfrage: "Möchten Sie zulassen, dass durch das folgende Programm von einem unbekannten Herausgeber ..." Beim Starten der Anwendung führe ich testweise diesen Code aus:
Delphi-Quellcode:
ShowMessage(ParamStr(0)+#13#10+
ParamStr(1)+#13#10+ ParamStr(2)+#13#10+ ParamStr(3)+#13#10); Fall 1: Ich öffne eine Kommandozeile mit Adminrechten und führe diesen Befehl aus:
Code:
Es erfolgt keine UAC-Abfrage, weil die Kommandozeile ja bereits im Admin-Kontext läuft.
"C:\anwendung.exe" "test eins zwo"
Ausgabe der Message-Box ist wie erwartet:
Code:
Fall 2:
C:\anwendung.exe
test eins zwo Nun öffne ich eine Kommandozeile ohne Admin-Kontext und führe die den gleichen Befehl wie eben aus. Es erfolgt wie erwartet eine UAC-Abfrage, nach Bestätigung erscheint die Message-Box mit diesem Inhalt:
Code:
Wie kann es sein, dass im zweiten Fall die Anführungszeichen ignoriert werden und der Parameter an den Leerzeichen auseinandergenommen wird?
C:\anwendung.exe
test eins zwo Was kann ich dagegen tun? :? |
AW: Problem mit ParamStr, Leerzeichen und UAC
Kannst du dein Projekt hier mal anhängen? Ich habe versucht dein Problem mal nachzuvollziehen, kann hier aber kein Problem feststellen.
|
AW: Problem mit ParamStr, Leerzeichen und UAC
Mein Projekt ist zu umfangreich, um es hier anzuhängen. Aber ich werde zum Wochenende eine neue "nackte" Anwendung anlegen und schauen, ob das Problem dort auch auftritt. Sollte ich es dort ebenfalls reproduzieren können, hänge ich das neue Projekt hier an.
|
AW: Problem mit ParamStr, Leerzeichen und UAC
@ringli
Danke fürs "Drauf-Hinstoßen", dass es eigentlich doch funktionieren sollte. Das hat mich überhaupt erst dazu bewogen, den Fehler intensiver in meiner eigenen Anwendung zu suchen. Und in der Tat ist eine für mich bereits in Vergessenheit geratene Komponente dafür zuständig gewesen, dass dieses Problem entstehen konnte. Es war also definitiv ein spezielles eigenes Problem. Sorry für die Verwirrung - aber Deine Analyse, dass es bei Dir damit keine Probleme gibt, hat mich dann erst auf die richtige Spur gebracht. Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz