AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Pfad mit GUID (KnownFolderId) umwandeln in vollen Pfad

Pfad mit GUID (KnownFolderId) umwandeln in vollen Pfad

Ein Thema von CodeX · begonnen am 21. Apr 2016 · letzter Beitrag vom 23. Apr 2016
Antwort Antwort
Seite 1 von 2  1 2   
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#1

Pfad mit GUID (KnownFolderId) umwandeln in vollen Pfad

  Alt 21. Apr 2016, 23:52
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?
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.896 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 22. Apr 2016, 19:49
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
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

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

  Alt 22. Apr 2016, 19:59
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.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.896 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 22. Apr 2016, 20:29
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
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 23. Apr 2016, 00:52
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.
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

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

  Alt 23. Apr 2016, 09:11
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
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#7

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

  Alt 23. Apr 2016, 10:09
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...
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

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

  Alt 23. Apr 2016, 10:23
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.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

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

  Alt 23. Apr 2016, 15:05
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.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#10

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

  Alt 23. Apr 2016, 15:29
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:23 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