AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Echten Pfadnamen unter Vista ermitteln...
Thema durchsuchen
Ansicht
Themen-Optionen

Echten Pfadnamen unter Vista ermitteln...

Offene Frage von "FunkyT"
Ein Thema von Hepdepaddel · begonnen am 10. Mai 2007 · letzter Beitrag vom 26. Okt 2007
Antwort Antwort
Benutzerbild von Hepdepaddel
Hepdepaddel

Registriert seit: 12. Dez 2005
Ort: Bremen
91 Beiträge
 
Delphi 2006 Enterprise
 
#1

Echten Pfadnamen unter Vista ermitteln...

  Alt 10. Mai 2007, 16:28
Hi,

bisher habe ich mit ExtractFilePath(Application.ExeName) den Pfadnamen ermittelt, in dem meine EXE liegt. So konnte ich andere Dateien im gleichen Pfad lesen.

Seit Vista liefert mir das aber "c:\programme" obwohl die Dateien in "c:\program files" liegen - keine Ahnung, wer sich das ausgedacht hat, jedenfalls habe ich jetzt im Explorer zwei Ordner c:\programme... sehr nett. Das dumme ist nun, dass meine Anwendung unter "c:\programme\..." sucht, beispielsweise um Berichtsdateien etc. zu öffnen.

Wie bekomme ich den "echten Pfad" und kann man die Anzeige im Explorer irgendwie so abschalten, dass man wieder weiß, wo man gerade wirklich ist?

Viele Grüße

Hepdepaddel
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Echten Pfadnamen unter Vista ermitteln...

  Alt 10. Mai 2007, 16:33
Hallo,
Zitat von Hepdepaddel:
Wie bekomme ich den "echten Pfad" und kann man die Anzeige im Explorer irgendwie so abschalten, dass man wieder weiß, wo man gerade wirklich ist?
den echten Pfad siehst Du im Explorer, wenn Du in die Adressleiste klickst.
Innerhalb eines Programmes kannst Du den tatsächlichen Pfad IMHO nur dann feststellen, wenn Deine Anwendung Vista-kompatibel ist, sprich ein Vista-Manifest hat. Ob das allerdings mit den klassischen Befehlen geht, weiß ich nicht. Das ist aber auch egal, da ja C:\Programme nur eine Illusion ist, die Vista aufbaut. Es gibt tatsächlich keinen Ordner dieses Namens. Die Frage ist: wozu willst Du den tatsächlichen Pfad wissen?

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von Hepdepaddel
Hepdepaddel

Registriert seit: 12. Dez 2005
Ort: Bremen
91 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: Echten Pfadnamen unter Vista ermitteln...

  Alt 10. Mai 2007, 19:15
Die Anwendung wurde in c:\program files\myapp installiert. Sie versucht nun aber, Daten aus c:\programme\myapp zu lesen. Das klappt nicht. Im Explorer finde ich den Ordner c:\programme gleich zweimal untereinander stehend - in einem gibt es "myapp", in dem anderen nicht. Um die Daten auslesen zu können, müsste ich an der richtigen Stelle suchen können

Gruß

Hepdepaddel
  Mit Zitat antworten Zitat
Semmel

Registriert seit: 15. Feb 2006
Ort: Bad Hall
64 Beiträge
 
#4

Re: Echten Pfadnamen unter Vista ermitteln...

  Alt 10. Mai 2007, 20:12
die 2 Pfade c:\programme ergeben sich durch das Update 1 Pfad ist der neue Pfad (c:\program files wird von Vista auf c:\programme durch die Sprache vorgespielt)
neue Programme werden in diesen Pfad gespeichert, mann sollte jedoch wegen den Rechten sowieso einen anderen Pfad wählen
2 Pfad ist der alte
  Mit Zitat antworten Zitat
karlkoch

Registriert seit: 26. Feb 2006
Ort: Leipzig
30 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Echten Pfadnamen unter Vista ermitteln...

  Alt 17. Mai 2007, 00:19
Bei mir gibt ExtractFilePath(Application.Exename) immer den echten Pfadnamen zurück, unter Vista ist das c:\program files.
Es ist in Vista eher umgedreht der Fall, das immer nur die echten Pfade zurückgegeben werden, und die Anwendung selber diesen Pfad "lokalisieren" muss (das was der Explorer macht). Das sieht man an all den Programmen die alte Setup-Routinen verwenden, dort ist der Standardpfad im deutschen Vista auch "program files".

karlkoch
  Mit Zitat antworten Zitat
Benutzerbild von Hepdepaddel
Hepdepaddel

Registriert seit: 12. Dez 2005
Ort: Bremen
91 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: Echten Pfadnamen unter Vista ermitteln...

  Alt 21. Mai 2007, 09:21
Sorry für die späte Antwort, ich musste noch in den Urlaub

Tatsächlich ist die Rückgabe OK, das habe ich nun noch mit ein paar Debug-Ausgaben getestet. Leider stehen noch falsche Daten in den INI-Files. Die Installation ist grundsätzlich "Vista-fähig", aber bislang habe ich erste Datendateien im Programmverzeichnis angelegt, der Anwender konnte dann beim ersten Programmstart (oder auch später) ein Verzeichnis für die Daten wählen. Nunmehr muss ich das Datenverzeichnis eben gleich bei der Installation abfragen.

Dennoch: Dem Vista-Explorer kann ich den wirklichen Pfadnamen ums Verrecken nicht entlocken... auch nicht mit "Herkömmliche Ordner" und "Vollständigen Pfadnamen anzeigen"... da stehen immer die gefakten Namen, mit dem Erfolg, dass die Verwirrung bei zweimal c:\programme oft groß ist...

Gruß

Hepdepaddel
  Mit Zitat antworten Zitat
FunkyT

Registriert seit: 26. Okt 2007
2 Beiträge
 
#7

Re: Echten Pfadnamen unter Vista ermitteln...

  Alt 26. Okt 2007, 10:46
Zitat von karlkoch:
Bei mir gibt ExtractFilePath(Application.Exename) immer den echten Pfadnamen zurück, unter Vista ist das c:\program files.
Es ist in Vista eher umgedreht der Fall, das immer nur die echten Pfade zurückgegeben werden, und die Anwendung selber diesen Pfad "lokalisieren" muss (das was der Explorer macht). Das sieht man an all den Programmen die alte Setup-Routinen verwenden, dort ist der Standardpfad im deutschen Vista auch "program files".
Ich habe unter VISTA Probleme mit dem echten Pfadnamen bzw. dem Link darauf:
Die Funktion Application.Exename liefert bei direktem Aufruf meiner Test.Exe 'c:\program files\myApp\Test.Exe'. Bei Aufruf der Exe mittels eines weiteren Programms über DDE wird ebenfalls dieser korrekte Pfad geliefert, falls im aufrufenden Programm der Pfad der "DDE.ServiceApplication" auf 'C:\program files\myApp\Test.Exe' zeigt.
Soweit ist das alles wunderbar.

Ist im aufrufenden Program jedoch der Pfad der "DDE.ServiceApplication" auf den lokalisierten (Link-)Pfad 'C:\PROGRAMME\myApp\Test.Exe' gesetzt, so liefert Application.Exename der aufgerufenen Test.Exe den lokalisierten (Link-)Pfad 'C:\PROGRAMME\myApp\Test.Exe' zurück.

Es ist kein Unterschied, ob ich Application.ExeName oder ParamStr (0) verwende.
Dieses nette Verhalten bereitet mir einige Kopfschmerzen...

Ich habe schon diverse Foren durchsucht, aber keine Funktion gefunden, welche diese lokalisierten Links in reale Pfade (oder umgekehrt) konvertiert. Die Api-Funktion SHGetLocalizedName ist z.B. auf Pfade nicht anwendbar.
Kenn jemand eine Lösungsmöglichkeit für dieses Problem ?

1000nd Dank schonmal !
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:41 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