Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Vista, XP & Co.: Dateien speichern (https://www.delphipraxis.net/119987-vista-xp-co-dateien-speichern.html)

MCXSC 4. Sep 2008 01:36


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

Cyberbob 4. Sep 2008 02:59

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

mkinzler 4. Sep 2008 05:33

Re: Vista, XP & Co.: Dateien speichern
 
Zitat:

Mit Vista hat MS ja einen Weg eingeschlagen
Nein diesen Weg haben sie schon lang eingeschlagen, jetzt setzen sie es nur durch,

Bernhard Geyer 4. Sep 2008 06:21

Re: Vista, XP & Co.: Dateien speichern
 
Zitat:

Zitat von MCXSC
Wie sollten bei solchen Programmen die Dateien gespeichert werden? Wohin idealerweise bei Vista, XP und vielleicht auch Win2000...

Gib mal im Startmenu unter Ausführen %AppData% ein. Dieser Pfad gibt es AFAIK auch schon seit W2K. In der JEDI gibt es Funktionen die diese Systempfade per offizieller API auslesen.

MCXSC 4. Sep 2008 22:32

Re: Vista, XP & Co.: Dateien speichern
 
Zitat:

Zitat von mkinzler
Zitat:

Mit Vista hat MS ja einen Weg eingeschlagen
Nein diesen Weg haben sie schon lang eingeschlagen, jetzt setzen sie es nur durch,

Ja, meinte ich ja. ;) Also sollte jedes noch so kleine Programm, was konfiguriert werden kann, die Datei(en) in den Ordner speichern? Die Registry wäre ja noch unsauberer.

mkinzler 4. Sep 2008 22:35

Re: Vista, XP & Co.: Dateien speichern
 
In das Benutzerprofil

FAlter 4. Sep 2008 22:45

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:

// [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;
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.

Und dann:

Delphi-Quellcode:
AppDataDir := GetSpecialFolderLocation(CSIDL_APPDATA) +
    'DeinNameOderDeineFirmaOderSo\DeinProgramm\';
  ForceDirectories(AppDataDir);
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.

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 Hier im Forum suchenHaushaltsbuch an. [/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 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