Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Daten-Dateien - wo speichern? (https://www.delphipraxis.net/130856-daten-dateien-wo-speichern.html)

torf160 14. Mär 2009 13:06


Daten-Dateien - wo speichern?
 
Hallo,

ich habe ein Programm, dass sowohl globale als auch benutzerspezifische Daten lesen und speichern soll.

Wo soll ich die Dateien speichern und wie stelle ich sicher, dass auch alle Benutzer die globalen Daten lesen und schreiben können?
Ist %APPDATA% der richtige Ort für die benutzerspezifischen Daten?

Es handelt sich um eine normale Anwendung, die mit Administratorrechten installiert und dann mit "normalen" Benutzerrechten benutzt werden soll.
An den Registrierungsdateien möchte ich keine Änderungen vornehmen.

Funktionieren sollte das ganze nach Möglichkeit mit Deplphi 3 unter Windows 95 bis Vista.

Schon mal vielen Dank, für Eure Hilfe.

torf160

freak4fun 14. Mär 2009 13:11

Re: Daten-Dateien - wo speichern?
 
GLobale Daten in das Verzeichnis für alle User und die anderen Daten in das Verzeichnis des aktuellen Users. Da musst du wohl mit 2 Dateien arbeiten. ;)

jaenicke 14. Mär 2009 13:14

Re: Daten-Dateien - wo speichern?
 
Das ist schon der richtige Ort, aber nach NT (2000 und höher) und Win9x müsstest du schon ggf. unterscheiden.
http://www.delphi-library.de/viewtopic.php?p=548600

Wenn du es richtig anstellst, dann kannst du es auch dem Benutzer überlassen, ob die Daten im eigenen Verzeichnis portabel oder den Richtlinien nach in den Anwendungsdaten gespeochert werden sollen:
http://www.delphi-library.de/viewtopic.php?p=541637
(Leider bin ich da noch nicht dazu gekommen das fertigzustellen.)

In dem zweiten Link stehen auch die einzelnen Möglichkeiten für die Daten.

Jens Hartmann 14. Mär 2009 15:49

Re: Daten-Dateien - wo speichern?
 
Das was hier gennant wird, ist ja alles soweit OK. Ich frage mich nur immer, wie machen das die Softwarehersteller. Wir z.B. nutzen eine Software, ein ganz neu entwickeltes Tool zur Steuerung von Zutrittskontrollsystemen, welche meistens ins Netzwerk integriert werden.

Die Datenbank der Software liegt allerdings Standartmäßig im Prgrammverzeichnis, was hier allerdings immer wieder als falsch und Vorallem als eventuell Fehlerhaft bewertet wird.

Die Software der Zutrittskontrolle hat folgendes Verzeichnis:

C:\Programme\Novar\IQMultiAccess\Date\IQDat.fdb

und die Software der Einbruchmeldetechnik

C:\Programme\Novar\Winfem\User.fdb

selbst Delhpi, hat in den Anwendungsdaten nicht alles gespeichert. Die gesamte LIB etc. befindet sich unter Programme.

torf160 14. Mär 2009 15:54

Re: Daten-Dateien - wo speichern?
 
@Christian: mehrere Dateien will ich ja auch benutzen.

@Sebastian Jänicke:

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.

Ist es denn möglich unter Delphi (Vers. 3) die Rechte zu verändern?

torf160

Christian Seehase 14. Mär 2009 16:06

Re: Daten-Dateien - wo speichern?
 
Moin Jens,

Zitat:

Zitat von Jens Hartmann
Die Datenbank der Software liegt allerdings Standartmäßig im Prgrammverzeichnis, was hier allerdings immer wieder als falsch und Vorallem als eventuell Fehlerhaft bewertet wird.

Da der normale Anwender dort keine Schreibrechte hat, gehören diese Daten, für den Fall, dass der normale Anwender sie ändern können soll, dort auch nicht hin.
Wenn die Daten dort nur gelesen werden sollen, ist es unproblematisch.

[EDIT]
Daten, die alle User betreffen gehören zwar in den "All Users"-Bereich, aber es auch nicht üblich, dass ein Anwender Daten eines Programmes global ändert. So gesehen ist das fehlende Schreibrecht dort auch kein Problem
[/EDIT]

freak4fun 14. Mär 2009 16:10

Re: Daten-Dateien - wo speichern?
 
Zitat:

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. ;)

jaenicke 14. Mär 2009 16:21

Re: Daten-Dateien - wo speichern?
 
Zitat:

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 :lol: , 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:

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:

Zitat von freak4fun
Zitat:

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.

Blackheart 14. Mär 2009 16:33

Re: Daten-Dateien - wo speichern?
 
Das waren nicht Fehler früher war das halt so.

jaenicke 14. Mär 2009 16:47

Re: Daten-Dateien - wo speichern?
 
Zitat:

Zitat von Blackheart
Das waren nicht Fehler früher war das halt so.

Naja, Windows 2000 wurde Anfang 2000 veröffentlicht... Und die Rechteproblematik gab es auch da schon.
Delphi 7 kam dann anderthalb Jahre später im August 2002 raus, da hätte das eigentlich korrigiert sein müssen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:40 Uhr.
Seite 1 von 2  1 2      

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