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 !