Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Problem mit ParamStr, Leerzeichen und UAC (https://www.delphipraxis.net/174069-problem-mit-paramstr-leerzeichen-und-uac.html)

CodeX 1. Apr 2013 18:22

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:
"C:\anwendung.exe" "test eins zwo"
Es erfolgt keine UAC-Abfrage, weil die Kommandozeile ja bereits im Admin-Kontext läuft.
Ausgabe der Message-Box ist wie erwartet:
Code:
C:\anwendung.exe
test eins zwo
Fall 2:
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:
C:\anwendung.exe
test
eins
zwo
Wie kann es sein, dass im zweiten Fall die Anführungszeichen ignoriert werden und der Parameter an den Leerzeichen auseinandergenommen wird?
Was kann ich dagegen tun? :?

ringli 2. Apr 2013 11:53

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.

CodeX 3. Apr 2013 23:54

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.

CodeX 4. Apr 2013 23:01

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 18:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz