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
Thema durchsuchen
Ansicht
Themen-Optionen

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
CodeX

Registriert seit: 30. Okt 2004
475 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.933 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.933 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
475 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
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 14:40 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