AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wo gemeinsame Daten speichern?

Ein Thema von patti · begonnen am 11. Jul 2009 · letzter Beitrag vom 12. Jul 2009
Antwort Antwort
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#1

Wo gemeinsame Daten speichern?

  Alt 11. Jul 2009, 13:02
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
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Wo gemeinsame Daten speichern?

  Alt 11. Jul 2009, 13:09
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Wo gemeinsame Daten speichern?

  Alt 11. Jul 2009, 13:15
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
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Wo gemeinsame Daten speichern?

  Alt 11. Jul 2009, 13:43
Die JWSCL hext ja nicht - sie kapselt nur die Windows-Funktionen. Mit MSDN-Library durchsuchenSetFileSecurity kannst du direkt den Security Descriptor der Datei setzen. Du musst dir vorher nur einen geeigneten SD konstruieren.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

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

Re: Wo gemeinsame Daten speichern?

  Alt 11. Jul 2009, 13:52
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#6

Re: Wo gemeinsame Daten speichern?

  Alt 12. Jul 2009, 10:27
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.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Wo gemeinsame Daten speichern?

  Alt 12. Jul 2009, 13:17
Naja, es geht halt darum, dass der User meines Programmes (es geht speziell um den "MedienKatalog") festlegen können soll, ob alle Benutzer des Computers auf die gleiche "Datenbank" zugreifen, oder jeder seine eigene Datenbank verwendet. Meiner Meinung nach sollte der Sinn des COMMON_APPDATA-Verzeichnisses ja darin liegen, eben solche Dinge zu ermöglichen...

Danke trotzdem für die Anregungen, werde mir da vielleicht noch was passendes überlegen.

Patti
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 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