Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.525 Beiträge
 
Delphi 11 Alexandria
 
#280

AW: Ordnung muss sein (LaunchBar)

  Alt 17. Aug 2018, 20:01
Obwohl ein fester .exe Pfad angegeben, greift Windows nicht darauf zu sondern bastelt sich die Informationen aus CSIDL und dem Solo-Namen zusammen, so ist jedenfalls meine Vermutung nach etlichen Tests unter Aufsicht von FileMon/ProcMon.
Da brauchst du nicht viel testen. Nimm einfach einen Hexeditor und überschreibe z.B. das Program aus Program Files in dem Pfad. Rufst du dann aber GetPath auf, bekommst du trotzdem Program Files (x86).
Der Grund ist wie vermutet, dass beim Laden des Links die darin enthaltenen CLSIDs aufgelöst werden. Das kann man leicht testen, indem man einen Haltepunkt auf die entsprechende API-Funktion SHGetKnownFolderPath setzt. Die wird dabei nämlich aufgerufen.

Die sinnvollste Lösung dafür ist tatsächlich einfach auf 64-Bit zu gehen, wenn man diese Information benötigt.

Ich selbst habe .lnk Dateien immer lediglich an ShellExecute gefüttert, habe aber den Pfad dort nicht ausgelesen. Den Pfad zu nehmen um den Prozess zu starten ist keine so gute Idee, da man damit alle solchen "Features" zur Auflösung der korrekten Pfade übergeht. Und zur Anzeige könnte man ihn manuell aus der .lnk Datei herausfriemeln.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat