![]() |
Pfad zu Application Data herauslesen
hallo,
ich möchte für mein Programm den Pfad zu "Application Data" herauslesen. Ich habe es versucht mit der Funktion "GetShellFolder" mit dem Parameter CSIDL_COMMON_APPDATA. Dies funktioniert leider nicht, da er diesen Wert nicht kennt. Andere Werte zum Beispiel um zum Windows Verzeichnis zu gelangen funktionieren. Kann mir da jemand weiterhelfen?? Gibt es eine andere Möglichkeit diesen Pfad herauszulesen?? Ich arbeite mit der Delphi Version 5.0 Danke schon im voraus Gruss |
Re: Pfad zu Application Data herauslesen
Hi.
Von Zeit zu Zeit hat MS die Liste der definierten CSIDL erweitert - schau mal in den ![]() Grüße vom marabu |
Re: Pfad zu Application Data herauslesen
ja das hab ich ja gesehen! aber der Wert CSIDL_COMMON_APPDATA kennt er
nicht! An was kann das liegen?? |
Re: Pfad zu Application Data herauslesen
ich benutze
Delphi-Quellcode:
und es funktioniert.
GetSpecialFolder (CSIDL_APPDATA);
damit bekomme ich C:\Dokumente und Einstellungen\<Benutzer>\Anwendungsdaten. |
Re: Pfad zu Application Data herauslesen
CSIDL_APPDATA ist ja auch etwas anderes als CSIDL_COMMON_APPDATA. [dp="CSIDL_COMMON_APPDATA"]Letzteres[/dp] bezeichnet nämlich den "Anwendungsdaten"-Ordner für alle Benutzer.
|
Re: Pfad zu Application Data herauslesen
Zitat:
Delphi-Quellcode:
Freundliche Grüße vom marabu
const
CSIDL_COMMON_APPDATA = $0023; |
Re: Pfad zu Application Data herauslesen
also nochmals:
Ich brauche den Pfad zu den 'Application Data' (Anwendungsdateien) von 'all users' und nicht von einem bestimmten user. Also den hier: 'C:\Documents and Settings\All Users\Application Data'. Mit der Funktion 'GetSpecailFolder(CSIDL_COMMON_APPDATA) sollte ich diesen Pfad erhalten. Wenn ich dann kompiliere, kennt er diesen Wert (CSIDL_COMMON_APPDATA) nicht. Nun ist meine Frage immer noch, gibt es noch eine andere Möglichkeit, diesen Pfad zu erhalten oder weiss jemand den Grund warum es nicht funktioniert?? Die Konstante zu definieren hat auch nicht funkioniert. Reicht das überhaupt aus?? denke nicht.. |
Re: Pfad zu Application Data herauslesen
Hai Flinto,
weniger die Delphiversion als die Version deiner SHELL32.DLL ist entscheidend. CSIDL_COMMON_APPDATA ist dort erst ab Version 5 vorhanden. Was für ein Betriebssystem hast Du denn bzw. welche Version hat die DLL bei Dir? |
Re: Pfad zu Application Data herauslesen
ich arbeite mit Window XP Professional. Wo finde ich diese Shell32.dll??
Habe über die Windows Suchmaschine gesucht aber nicht gefunden. Noch ne vieleicht blöde Frage: Das heisst aber nicht das wenn ich mein Programm auf einem anderen Computer, der eine tiefere Version als 5 hat, laufen lasse, es nicht funktioniert?? danke für die hilfe |
Re: Pfad zu Application Data herauslesen
Zitat:
Zitat:
Zitat:
|
Re: Pfad zu Application Data herauslesen
Also die version meiner shell32.dll ist 6.0. Das sollte
also kein Problem sein. Kann man dann sagen ab welcher Window Version die shell32.dll Version sicher 5.0 oder höher ist?? Oder gibt es sonst noch eine andere Möglichkeit diese Systempfade herauszulesen?? |
Re: Pfad zu Application Data herauslesen
Hai Flinton,
bei mir läuft es ab Windows 2000 prof. aufwärts. Unter Win 98 geht es nicht. Ein Win ME habe ich nicht installiert. |
Re: Pfad zu Application Data herauslesen
Ich habe mal eben D5 angeworfen:
Delphi-Quellcode:
Das Herzstück ist der API-Call SHGetSpecialFolderLocation() und zu dem sagt der Windows Platform SDK:
program Demo;
{$APPTYPE CONSOLE} uses Windows, SysUtils, ActiveX, ShlObj; function IncludeTrailingPathDelimiter(path: String): String; begin Result := IncludeTrailingBackslash(path); end; function GetSpecialFolderLocation(csidl: integer): string; var pMalloc: IMalloc; pidl: PItemIDList; path: array [0..MAX_PATH] of Char; begin Result := '?'; if SHGetMalloc(pMalloc) = S_OK then begin SHGetSpecialFolderLocation(0, csidl, pidl); SHGetPathFromIDList(pidl, path); Result := IncludeTrailingPathDelimiter(Path); pMalloc.Free(pidl); end; end; begin WriteLn(GetSpecialFolderLocation($23)); end.
Code:
marabu
Minimum DLL Version shell32.dll version 4.7 or later
Custom Implementation No Header shlobj.h Import library shell32.lib Minimum operating systems Windows NT 4.0, Windows 95 |
Re: Pfad zu Application Data herauslesen
Zitat:
Aber zu CSIDL_COMMON_APPDATA sagt das SDK Zitat:
|
Re: Pfad zu Application Data herauslesen
Da hast du auch richtig gedacht, Sharky. :)
Die Konstante CSIDL_COMMON_APPDATA gibt es erst ab Windows 2000. Im PSDK findet man eine Übersicht, welche shell32.dll-Version welcher Windows-Version beiliegt. |
Re: Pfad zu Application Data herauslesen
Moin Zusammen,
Zitat:
|
Re: Pfad zu Application Data herauslesen
Hallo,
Zitat:
In
Delphi-Quellcode:
ist CSIDL_COMMON_APPDATA enthalten.
uses SHFolder
lg Sebastian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz