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 GetTempPathA liefert falsches Verzeichnis? (https://www.delphipraxis.net/176052-gettemppatha-liefert-falsches-verzeichnis.html)

Angel4585 9. Aug 2013 09:27

GetTempPathA liefert falsches Verzeichnis?
 
Guten Morgen!

Ich habe da Problem, dass GetTempPathA ein Verzeichnis liefert, welches nicht existiert.

Der eigentliche Pfad lautet "C:\Users\M.Weber\AppData\Local\Temp\"
GetTempPathA liefert "C:\Users\M1B24~1.WEB\AppData\Local\Temp\"

Mir ist bekannt, dass der Username schonmal irgendwie anders dargestellt werden kann, kein Problem.
Normalerweise ist es mir aber dann möglich diesen Pfad im Explorer einzugeben und dorthin zu navigieren.
Das geht jetzt aber nicht.

Diese Methode nutze ich, um mir den Pfad zu holen:
Delphi-Quellcode:
ltemppath:=Allocmem(MAX_PATH+1);
GetTempPathA(MAX_PATH,ltemppath);
Ich arbeite mit Windows 7, 64-Bit.
Das Programm wird auf ein Netzlaufwerk, bzw. UNC-Laufwerk auf einem anderen Rechner abgelegt und auf meinem Rechner ausgeführt.

Hat jemand eine Idee was da schief läuft?

Edit:
Die Umgebungsvariablen TMP und TEMP haben den Wert: "%USERPROFILE%\AppData\Local\Temp"

Bernhard Geyer 9. Aug 2013 09:41

AW: GetTempPathA liefert falsches Verzeichnis?
 
Die A-Version wird halt die 8.3-Notation des Pfades zurück liefern. Also völlig OK.

Wieso überhaupt die A-Version. Du hast do D2010 und solltest sinnvollerweise nur mit der W-Version der API arbeiten.

Angel4585 9. Aug 2013 10:07

AW: GetTempPathA liefert falsches Verzeichnis?
 
Das Problem ist ja nicht, dass der Benutzerordner anders heisst, sondern dass es den garnicht gibt.
Normalerweise wird der Benutzerordner umbenannt in einen Namen der ähnlich lautet wie der oben und wenn ich diesen im Explorer eingebe komme ich auch zum Benutzerordner.

Der Name der hier aber jetzt erstellt wird ist schlichtweg falsch.


Ich habe ein älteres Projekt jetzt auf D2010 umgestellt und da war das GetTempPathA halt noch drin, ich könnte jetzt natürlich alle A zu W umstellen, aber das ist halt mit sehr viel Aufwand verbunden :duck:

Edit: Habe es an der Stelle jetzt mal auf GetTempPathW geändert, das liefert genau den selben Pfad..

Namenloser 9. Aug 2013 10:07

AW: GetTempPathA liefert falsches Verzeichnis?
 
Könnte es sein, dass die UAC-Virtualisierung zugeschlagen hat?

Angel4585 9. Aug 2013 10:17

AW: GetTempPathA liefert falsches Verzeichnis?
 
Ich hasse dieses Wort, weil ich immernoch nicht ganz verstehe, was die UAC-Virtualisierung macht bzw wofür das gut sein soll :roll:

Also was macht die an dieser Stelle?

UAC-Virtualisierung ist laut Taskmanager für den Prozess aktiv

Edit:
Interessant ist vielleicht auch, dass in der IDE unter "Tools->Optionen->Umgebungsoptionen->Umgebungsvariablen" der korrekte Pfad angegeben wird:
"C:\Users\M0B95~1.WEB\AppData\Local\Temp"

Das Problem tritt auch nur auf, wenn ich das Programm aus der IDE ausführe. :wall:

Angel4585 9. Aug 2013 11:21

AW: GetTempPathA liefert falsches Verzeichnis?
 
Gelöst :firejump:

In den Projektoptionen unter Debugger->Umgebungsblock waren einige überschriebene Umgebungsvariablen :shock:
So eben auch die TMP und TEMP, die auf diesen fixen/falschen Pfad eingestellt waren.
Hab die überschriebenen rausgelöscht und schon geht es..

Und das obwohl ich nie zuvor in meinem Leben etwas an dieser Stelle gemacht habe :wall:

Union 9. Aug 2013 14:37

AW: GetTempPathA liefert falsches Verzeichnis?
 
Zitat:

Zitat von Angel4585 (Beitrag 1224127)
Und das obwohl ich nie zuvor in meinem Leben etwas an dieser Stelle gemacht habe :wall:

Genau... Nie im Leben.

Angel4585 9. Aug 2013 14:50

AW: GetTempPathA liefert falsches Verzeichnis?
 
Echt nicht, ich wusste nichtmal, dass man die Umgebungsvariablen für einen Debugging-Vorgang überschreiben kann... All die Jahre :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:31 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