| 

.NET C# Java Javascript Exception

1
Ich habe eine Frage zu den Settings in .NET:

Man kann ja über das Visual Studio bequem Einstellungen (Settings) auf User- oder Applikation-Ebene definieren und dann aus dem Code über die Klasse Settings zugreifen / ändern.

Settings auf User-Ebene sind vom User änderbar und werden im Profil des Users gespeichert.
Settings auf Application-Ebene sind nicht vom User änderbar und für alle User gleich.

Nun bräuchte ich eine elegante Mischung aus User und Applikation-Settings:
Ich möchte Einstellungen vergeben die für alle User gleich sind (also wie Applikation) die es also nur 1 x gibt. Jeder User soll die Einstellung aber auch ändern können - sodass sie dann auch für alle anderen User des Systems geändert ist.

Meine Idee war ein eigenes Objekt mit Einstellungen anlegen und mittels Serialisierung im Pfad der Anwendung ablegen.
a
Gibt es andere, elegantere Möglichkeiten?

Viele Grüße

Maik
News:
09.03.2011
Maik_1978 674 1 8
3 Antworten
2
Hallo Maik,

erstelle eine Settings datei. in properties ist bei einen Standard Projekt immer eine inkludiert.
Darin kannst du alle möglichen Objecte auf User und Application ebene anlegen.

Im Quellcode kannst du über App.Net.Properties.Settings.Default.Propery darauf zugreifen.

mehr infos hier:
http://msdn.microsoft.com/en-us/library/aa730869%28v=vs.80%29.aspx

lg
09.03.2011
wuliwux 133 5
Floyd 14,6k 3 9
Edit: Link-Fix
Floyd 09.03.2011
Ich glaube er wollte daraus hinaus, dass er den Vorteil des Application Scopes nutzen will, dass aie Einstellungen global gelten, aber ebenso für die gleiche Einstellung den Vorteil der User Scopes haben möchte, dass diese zur Laufzeit änderbar sind, oder?
Dustin Klein 10.03.2011
0
Hallo Maik,

wenn ich Dein Anliegen richtig verstanden habe, gibt es nur eine Antwort darauf: Mit .NET Bordmitteln geht es nicht, da die Anwendungseinstellungen schreibgeschützt sind. Hier muss wohl oder übel eine eigene Lösung her. Es dürfte am einfachsten sein, die "MeineAnwendung.exe.config" zu laden und über einen XPath-Ausdruck direkt den neuen Wert zu setzen (danach muss die Datei natürlich wieder gespeichert werden). So muss man keine eigenen Konfigurationsklassen schreiben.

Beim Speichern der Datei dürftest Du allerdings auf massive Proleme stoßen, denn ohne Admin-Rechte geht hier nichts (bei Windoes XP reicht aber bereits der Hauptbenutzer). Und daran dürftest Du mit jeder Lösung (egal welche) scheitern.

Eine Möglichkeit, das Problem mit der Berechtigung zu lösen, ist ein Verzeichnis, auf das alle Benutzer, die etwas an den globalen Einstellungen ändern dürfen, Schreibrechte besitzen. Hier fallen mir auf Anhieb nur die öffentlichen Dokumente ein, denn selbst der Ordner für globale Anwendungseinstellungen ist nur als Admin beschreibbar. Da die öffentlichen Dokumente aber für jeden(!) einsehbar sind, und man die globale Konfiguraiton sicher nicht zum Abschuss (sprich: Löschen) freigeben möchte, könnte man sie ggf. über die Dateiattribute verstecken.

Kurz: Das Ändern der Einträge in der Anwendungskonfiguration ist dabei noch das kleinste Problem. Schwieriger dürfte es sein, einen geeigneten Ort zu finden. Und wenn man den hat, muss man leider auch eigene Konfigurationsklassen schreiben, denn bei der .NET-Lösung kann man den Pfad der Konfiguration nicht ändern.

Aber vielleicht hat einer der Kollegen dazu bereits eine Idee?
12.03.2011
Andreas Ganzer 1,4k 1 8
0
Hallo!

Als ich die Settings in VS noch nicht kannte, habe ich die Einstellungen in der Registry abgelegt.
Ich weiß nicht, ob das für Deine Aufgabe in Frage kommt, soll auch nur so als Idee in den Raum geworfen werden.
12.03.2011

Stelle deine Settings-Frage jetzt!