![]() |
Vista, XP & Co.: Dateien speichern
Hallo,
ich habe eine eigentlich kurze Frage. Mit Vista hat MS ja einen Weg eingeschlagen, der eigentlich postiv ist: Programmdateien (Konfigurationsdateien, etc.) werden in einem Ordner ("Users") gespeichert - ansonsten darf das Programm eben nicht schreiben oder muss mit Adminrechten gestartet werden. Das Problem: Simple "One-EXE-Tools", die nur eine kleine Konfigdatei benötigen, brauchen direkt einen eigenen Ordner. Darum meine Frage: Wie sollten bei solchen Programmen die Dateien gespeichert werden? Wohin idealerweise bei Vista, XP und vielleicht auch Win2000... MCXSC |
Re: Vista, XP & Co.: Dateien speichern
Du könntest die Daten auch in der Registry ablegen. Der Zugriff auf den User-Zweig sollte imho auch ohne adminrechte möglich sein
|
Re: Vista, XP & Co.: Dateien speichern
Zitat:
|
Re: Vista, XP & Co.: Dateien speichern
Zitat:
|
Re: Vista, XP & Co.: Dateien speichern
Zitat:
|
Re: Vista, XP & Co.: Dateien speichern
In das Benutzerprofil
|
Re: Vista, XP & Co.: Dateien speichern
Hi,
es gibt da so eine Systemfunktion, die die sagt, wohin die Daten gehören. Egal, unter welchem Win, die landen dann immer an der richtigen Stelle, auch, wenn sich das mal ändert. Für Delphi vereinfacht dann so:
Delphi-Quellcode:
Steht ganz oft hier in der DP, ich guck lieber in meinem Source nach, aber da hab ich ja die Quelle angegeben. Hab sie irgendwo aus der DP rauskopiert. Gibt aber glaub ich noch ne verbesserte Variante.// [url]http://www.delphipraxis.net/post488514.html#488514[/url] 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; Und dann:
Delphi-Quellcode:
Und dann existiert dein Anwendungsdatenverzeichnis. Am besten du schreibst noch ein Tool dazu, dass die Userrückstände dann später löscht, da die Deinstallation natürlich nicht auf ALLE Userprofile zugreift.
AppDataDir := GetSpecialFolderLocation(CSIDL_APPDATA) +
'DeinNameOderDeineFirmaOderSo\DeinProgramm\'; ForceDirectories(AppDataDir); Mfg FAlter [edit] Für ein kleines Tool empfiehlt es sich, das wählbar zu gestalten, entweder direkt im Anwendungsverzecihnis (z. B. wenn es auf USB-Stick ist) oder unter Anwendugsdaten (lokal installiert). Sieh dir mal meine tolles ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:33 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