Ich bin grad am umstruktieren eines mittleren Projektes. Konkret geht es hier gerade um Zentrale Einstellungen zur Datenbankverbindung, (aber eben nur die Konfigurationsdaten dafür, nicht die
DB an sich, deswegen auch .NET Sparte
).
Ich habe mir folgendes Überlegt:
Die Installierte Anwendung soll die Wahl zwischen verschiedenen Datenbanken zum Verbinden dem User überlassen, der sich anmelden will. Der User hat also eine Liste mit verschiedenen
DB's, wählt da eine aus und meldet sich dort an.
Der Administrator (ich meine hier den Windows-Admin, also ein User mit lokalen Adminrechten) soll zusätzlich die Möglichkeit haben, diese verschiedenen Datenbanken die den Usern an der entsprechenden Maschine zur Auswahl stehen zu konfigurieren.
Mein Gedankengang war der: Diese
DB-Config kommt in die App.Config ins Anwendungsverzeichnis. Nur ein lokaler Admin hat die Rechte hier zu schreiben, damit ist schonmal sichergestellt dass kein User die verändern kann.
Würde ich diese Konfiguration unter All Users vornehmen muss ich mich von Hand darum kümmern, dass nur ein berechtigter User das darf. Und dann könnten findige Benutzer diese Einstellungen dennoch unter Umgehung der Anwendung manipulieren. Dies fällt also aus.
Wie bekomme ich es nun hin, dass der Admin die globale App.config bearbeiten kann und die Anwendung das auch gleich mitbekommt? In der Zielumgebung kann ich dem Admin nicht zumuten, ein Config File von Hand anzupacken, wenn ich vermeiden will danach jedesmal selber wieder Hand anzulegen damit die Anwendung wieder läuft. Zumal ich ja die
DB-Passwörter irgendwie ablegen muss (nein, Windows-Based Authentication geht da nicht), so dass die Verwendung eines separaten Tools vonnöten ist, was ich unter allen Umständen vermeiden will.
Usersettings taugen hier auch nicht, weil die Datenbankeinstellungen ja global notwendig sind.
Also: What to do?