Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   C# App.Config: Vom Admin bearbeitbar machen? (https://www.delphipraxis.net/80875-app-config-vom-admin-bearbeitbar-machen.html)

Phoenix 16. Nov 2006 17:34


App.Config: Vom Admin bearbeitbar machen?
 
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?

Jürgen Thomas 17. Nov 2006 10:19

Re: App.Config: Vom Admin bearbeitbar machen?
 
Hallo Sebastian,

auf alles kann ich nicht antworten; aber ein paar Hinweise habe ich doch.

Die app.config scheint innerhalb des Programms nach wie vor read-only zu sein (auch unter NET 2.0 mit dem ConfigurationManager): Ich habe Änderungen aus einem Programm heraus versucht (ohne Fehlermeldung), aber nichts wurde geändert; später habe ich in einem Forumsbeitrag (ich glaube myCSharp.de) in einer Randbemerkung eine entsprechende Bestätigung gelesen.

Für die Änderung durch den Admin brauchst Du also wohl ein kleines Hilfsprogramm.

Für die Anpassung des Programms selbst solltest Du Dir die Delphi-Referenz durchsuchenFileSystemWatcher-Klasse ansehen.

Viel Erfolg! Jürgen

Phoenix 17. Nov 2006 11:57

Re: App.Config: Vom Admin bearbeitbar machen?
 
Ja, ich war mir auch ziemlich sicher dass ich gelesen hab dass das readonly ist. Aber das ist imho ja etwas bescheiden by design.

Man kann die app.config zwar auch innerhalb der Anwendung modifizieren (dann halt als normales .xml-File öffnen und speichern), aber die Anwendung selber bekommt die Änderungen erst beim nächsten Neustart mit - und ich kann niemandem verklickern wenn er vom Login-Dialog mit einem Button in die DB-Konfiguration kommt, dass er dann die Anwendung neu starten muss wenn er eine frisch angelegte Connection nutzen will.

Da muss es doch einen Weg geben?

Jürgen Thomas 17. Nov 2006 12:22

Re: App.Config: Vom Admin bearbeitbar machen?
 
Zitat:

Zitat von Phoenix
Ja, ich war mir auch ziemlich sicher dass ich gelesen hab dass das readonly ist. Aber das ist imho ja etwas bescheiden by design.

Und ob!
Zitat:

Zitat von Phoenix
Man kann die app.config zwar auch innerhalb der Anwendung modifizieren (dann halt als normales .xml-File öffnen und speichern),

Richtig. Das hatte ich meinem Vorschlag eines Hilfsprogramms für den Admin gemeint; das kann er auch aus dem Programm heraus machen.
Zitat:

Zitat von Phoenix
... aber die Anwendung selber bekommt die Änderungen erst beim nächsten Neustart mit...

Da muss es doch einen Weg geben?

Dafür hatte ich Dich auf die Delphi-Referenz durchsuchenFileSystemWatcher-Klasse hingewiesen: Die Anwendung überwacht Änderungen ihrer eigenen app.config; wenn sie Änderungen feststellt, dann soll sie sie sofort einlesen und benutzen.

Gruß Jürgen

Phoenix 17. Nov 2006 12:32

Re: App.Config: Vom Admin bearbeitbar machen?
 
Ahhhh :) Na, dann werd ich mir das mal bei Gelegenheit reinziehen. So heut abend oder so. Vielen Dank *g*

Jürgen Thomas 17. Nov 2006 12:43

Re: App.Config: Vom Admin bearbeitbar machen?
 
Zusätzlicher Hinweis: Für Deine Zwecke ist wohl auch die Delphi-Referenz durchsuchenConfigurationManager.RefreshSection-Methode hilfreich. Jürgen


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:51 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