Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Pfad mit GUID (KnownFolderId) umwandeln in vollen Pfad (https://www.delphipraxis.net/188953-pfad-mit-guid-knownfolderid-umwandeln-vollen-pfad.html)

CodeX 21. Apr 2016 23:52

Pfad mit GUID (KnownFolderId) umwandeln in vollen Pfad
 
Angenommen ich habe einen Pfad-String dieser Form:
Code:
{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\taskmgr.exe
Wie kann ich diesen am einfachsten in einen vollen, normalen Pfad umwandeln -> C:\Windows\System32\taskmgr.exe

Ich habe hierzu nur SHGetKnownFolderPath gefunden, das aber nur die separate GUID nimmt, sowie eine Auflistung von KNOWNFOLDERID. ExpandEnvironmentStrings funktioniert leider nur mit Strings dieser Art: '%windir%\system32\taskmgr.exe'.

Muss ich den String wirklich zerlegen, dabei alle Eventualitäten beachten, die GUID per SHGetKnownFolderPath umwandeln und wieder zusammensetzen?
Oder gibt es eine Funktion, die wie ExpandEnvironmentStrings funktioniert und mir den String einfach umwandelt?

Rollo62 22. Apr 2016 19:49

AW: Pfad mit GUID (KnownFolderId) umwandeln in vollen Pfad
 
Ist das nicht einfach eine feste Beziehung, wie aus deinem Link ersichtlich ?

Zitat:

FOLDERID_System <> GUID{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}
Was willst du da zerlegen ?

Rollo

Zacherl 22. Apr 2016 19:59

AW: Pfad mit GUID (KnownFolderId) umwandeln in vollen Pfad
 
Zitat:

Zitat von Rollo62 (Beitrag 1336403)
Was willst du da zerlegen ?

Er hat die GUID ja als Teil eines Strings vorliegen. Die interne Darstellung verwendet aber keine Strings, weshalb er die Binärdarstellung der GUID erst ermitteln muss.

Rollo62 22. Apr 2016 20:29

AW: Pfad mit GUID (KnownFolderId) umwandeln in vollen Pfad
 
Ich meine die FolderIDs mit deren GUIDs sind doch fest in der MSDN Liste beschrieben und vorhanden,
könnte man doch komplett als TDictionary anlegen o.ä. und danach suchen.

Oder wie oft ändert sich so eine GUID ?

Ok, ist ein bischen Fleissarbeit, wäre jedenfalls bis M$ was ändert eine mögliche Lösung.

Rollo

CodeX 23. Apr 2016 00:52

AW: Pfad mit GUID (KnownFolderId) umwandeln in vollen Pfad
 
Klar, man kann eine Stringzuordnung machen und diese nutzen, um Stringteile zu ersetzen. Man kann auch wie beschrieben GUIDs in den Strings erkennen, entnehmen, umwandeln und mit dem Rest von String wieder zusammensetzen. Alles möglich. Ich hatte nur das gefühl, dass das irgendwie falsch bzw. unnötig kompliziert.

Ich habe entsprechend angenommen, dass es eine Funktion wie ExpandEnvironmentStrings geben muss, wo man den Pfad mit GUID reingibt und den umgewandelten vollen Pfad herausbekommt. Ich habe nur leider kein Pendant zu ExpandEnvironmentStrings gefunden, das dies kann und dachte, dass vielleicht hier jemand eine Idee bzw. Erfahrung mit diesem Pfad-GUIDs hat.

nahpets 23. Apr 2016 09:11

AW: Pfad mit GUID (KnownFolderId) umwandeln in vollen Pfad
 
Unter KNOWNFOLDERID findest Du u. a. neben den GUIDs die Beschreibung "Legacy Display Name".

Die entsprechenden Werte zu den Beschreibungen kannst Du in der Registry unter "HKEY_CURRENT_USER\Software\Microsoft\Windows\Curr entVersion\Explorer\Shell Folders" und "HKEY_CURRENT_USER\Software\Microsoft\Windows\Curr entVersion\Explorer\User Shell Folders" einsehen.

Die Pfade, auf die die einzelnen GUIDs verweisen, können auf jedem System anders sein. Die Frage, die sich für mich stellte ist momentan: Was möchtest Du erreichen?

Was ist hiermit? IKnownFolder::GetPath

Wäre dashier 'ne Anregung: http://delphi.about.com/od/kbwinshel...FolderPath.htm

CodeX 23. Apr 2016 10:09

AW: Pfad mit GUID (KnownFolderId) umwandeln in vollen Pfad
 
Zitat:

Zitat von nahpets (Beitrag 1336426)
Was möchtest Du erreichen?

Wie gesagt: Ich erhalte über eine Schnittstelle Pfad-Strings, die ggf. GUIDs als Teil des Pfades enthalten. Um mit dem Pfad nun arbeiten zu können, muss ich das erst in einen echten Pfad umwandeln. Meine Annahme war, dass es eine ähnliche Funktion wie ExpandEnvironmentStrings geben muss, die das direkt und ohne Umwege kann, die ich aber nur nicht finde. Daher hier die Frage...

nahpets 23. Apr 2016 10:23

AW: Pfad mit GUID (KnownFolderId) umwandeln in vollen Pfad
 
Wäre dashier eventuell eine Hilfe?

http://www.delphipraxis.net/170313-v...olderpath.html

Und dort die Routine "SHGetKnownFolderPath", da geht 'ne GUID rein und der Pfad kommt raus.

Zacherl 23. Apr 2016 15:05

AW: Pfad mit GUID (KnownFolderId) umwandeln in vollen Pfad
 
Du verstehst das eigentliche "Problem" nicht. Wie er die GUID in den eigentlichen Pfad umwandeln kann, weiß er. Die Frage ist eigentlich nur, ob es eine API gibt, die dies analog zu MSDN-Library durchsuchenExpandEnvironmentStrings auch direkt mit zusammengesetzten Strings machen kann.

nahpets 23. Apr 2016 15:29

AW: Pfad mit GUID (KnownFolderId) umwandeln in vollen Pfad
 
Doch, ich verstehe das eigentliche Problem und die passende API gibt es nicht (oder ist so gut versteckt, dass man sie nicht finden kann).
Daher Lösungsalternativen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:31 Uhr.
Seite 1 von 2  1 2      

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