![]() |
Wo gemeinsame Daten speichern?
Folgendes Problem: Ich möchte aus meinem Programm heraus Daten (Einstellungen, etc.) an einem zentralen Ort speichern, sodass alle Benutzer von Windows auf diese zugreifen können, diese also sowohl lesen als auch schreiben können. Dafür ist ja eigentlich das COMMON_APPDATA-Verzeichnis gedacht (unter Vista z.B. "C:\ProgramData\"), allerdings können bei mir unter Vista Nicht-Admins die Daten nur lesen, jedoch nicht überschreiben, was jedoch benötigt wird. Dieses Problem ist bekannt und es gibt auch schon einige Threads in der DP dazu, allerdings hilft mir das bisher nicht wirklich weiter.
Deswegen meine Frage: Ist es möglich, allen Benutzern (also auch den Nicht-Admins) innerhalb meines Programmes die Rechte zu geben, diese Dateien zu ändern? Alternativ: Wo können die Daten noch sinnvoll abgespeichert werden, sodass garantiert wird, dass jeder Benutzer Schreibrechte hat? Patti |
Re: Wo gemeinsame Daten speichern?
Vermutlich hat normalerweise nur der Ersteller der Datei vollen Zugriff. Es ist aber nicht schwer, das zu ändern. Mit der JWSCL ist es ein Kinderspiel.
|
Re: Wo gemeinsame Daten speichern?
Stimmt, der Ersteller hat vollen Zugriff auf die Dateien. Gibt es außer der JWSCL noch eine weitere Möglichkeiten (mit "Bordmitteln"), die Rechte zu setzen?
Oder doch einen alternativen Speicherort? Patti |
Re: Wo gemeinsame Daten speichern?
Die JWSCL hext ja nicht - sie kapselt nur die Windows-Funktionen. Mit
![]() |
Re: Wo gemeinsame Daten speichern?
Naja, wenn das so ist, dass nur der Besitzer alles darf dort: wie wäre es denn, wenn du einfach mehrere Dateien benutzt? Dann könnte jeder Daten einstellen und seine eigenen Daten auch löschen. Wer fremde Daten löschen will, der bekommt in seiner Datei einfach ein Flag gespeichert, dass der Eintrag gelöscht / editiert werden soll. Bei der nächsten Anmeldung kann der Besitzer dann gefragt werden, ob er das übernehmen will.
Auf diese Weise können alle Daten von allen benutzt werden, aber niemand kann fremde Daten aus Versehen beschädigen. |
Re: Wo gemeinsame Daten speichern?
Naja, was du da schreibst ist ein Sicherheitsproblem. Wenn jeder die Datei manipulieren kann, ohne auf dein Programm zurückgreifen zu brauchen, dann kann man vllt auch Pufferüberläufe provozieren und damit möglicherweise untere einem fremden Benutzeraccount Code ausführen.
Letztendlich gibt es auch mehreren Benutzer an einem Rechner, d.h. diese Datei könnte von mehreren Benutzern gleichzeitig geöffnet werden, bzw. überschrieben werden. D.h. der letzte Benutzer und seine Änderung gewinnt und überschreibt ohne den ersten Benutzer zu informieren, alle Daten. Wenn es eine Ressource geben soll, die von mehreren Benutzers bearbeitet werden darf, dann muss das immer über ein Interface gehen, was nicht nur die Eingabedaten verifizieren sondern auch mehrere Benutzer verwalten kann. Ich rate daher dringend ab, eine Datei für mehrere Benutzer freizugeben. Das ist die Sicherheitslücke schlechthin, weil man nie ausschließen kann, dass das Programm doch einen Fehler hat. |
Re: Wo gemeinsame Daten speichern?
Naja, es geht halt darum, dass der User meines Programmes (es geht speziell um den
![]() Danke trotzdem für die Anregungen, werde mir da vielleicht noch was passendes überlegen. Patti |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 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