Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.354 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Daten-Dateien - wo speichern?

  Alt 14. Mär 2009, 16:21
Zitat von Jens Hartmann:
selbst Delhpi, hat in den Anwendungsdaten nicht alles gespeichert. Die gesamte LIB etc. befindet sich unter Programme.
Diese wird aber auch nicht verändert. Die kompilierten Packages z.B. landen ab Delphi 2005 in den eigenen Dateien unter "Borland Studio Projects\Bpl" bzw. ab Delphi 2007 in den öffentlichen Dokumenten unter "Rad Studio (5)6.0\Bpl".
Deshalb braucht Delphi ab 2005 auch keine Administratorrechte.

Das alte Delphi 7 und früher hat den Fehler gemacht, dass es das aktuelle Arbeitsverzeichnis benutzt hat als Projektverzeichnis, was u.a. die Inkompatibilität mit Vista verursacht hat. Das ist jetzt aber auch schon 8 Jahre oder so alt, deshalb ist das heute ja nicht mehr so schlimm. Aber man kann das mit kleinen Tricks auch vollständig unter Vista und Windows 7 zum Laufen bekommen.
Aber wer will das schon , da fehlen ja ohnehin viele Sachen, sowohl in der IDE als auch in der Sprache. Das merke ich ja, wenn ich irgendwie zumindest den größten Teil der Funktionalität von Komponenten auch dort noch anzubieten versuche.

Zitat von torf160:
Das mit dem GetSpecialFolder hab ich hinbekommen und ich würde die Dateien auch gerne in C:\Dokumente und Einstellungen\All Users\Anwendungsdaten schreiben.
Es sieht aber so aus, als ob ein normaler Benutzer dort auch nur Lese-Rechte hat. Es soll ja aber möglich sein, die Dateien neu zu schreiben.
Die veränderbaren Daten sollten in CSIDL_APPDATA (benutzerspezifisch im ganzen Netzwerk), CSIDL_LOCAL_APPDATA (benutzerspezifisch und nur auf dem Rechner) hinein. In den Pfad für alle Benutzer darf ein Programm eines einzelnen Benutzers nicht ohne Administratorrechte schreiben.
http://msdn.microsoft.com/en-us/library/bb756940.aspx

Als Ausweg blieben (wenn die Daten wirklich für alle Benutzer gelten müssen) die öffentlichen Dokumente (CSIDL_COMMON_DOCUMENTS = $2E), in denen Schreibrechte bestehen. Das ist ja auch der Grund, weshalb Codegear diese mit dem Rad Studio nutzt.

Allerdings sind diese ggf. freigegeben, deshalb ist es eher sinnvoll, diese nur zum Datenaustausch zu verwenden, d.h. zum Beispiel dort eine Kopie abzulegen, die dann ggf. ins eigene Profil kopiert werden kann, wenn ein Benutzer das Programm startet.

Sinnvoll ist da dann auch eher ein Server, auf dem die entsprechenden Rechte für alle Benutzer gesetzt sind.

// EDIT:
Zitat von freak4fun:
Zitat von torf160:
C:\Dokumente und Einstellungen\All Users\Anwendungsdaten
AppData ist ja nicht das Ende vom Lied. Da gibts bei mir hier unter Vista noch \roaming und \local. Ich würde sagen local gehört zum User und roaming für alle User. Bin mir aber nicht sicher. Mein Programm speichert seine Daten im Moment in \local\<ProgrammName>\settings.ini.
Nicht ganz. Local ist nur für den Benutzer und nur für den Rechner, Roaming ist bei einer Netzwerkanmeldung für diesen Benutzer auf allen PCs.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat