Hallo,
aus der NET-
SDK-Doku habe ich folgenden Code übernommen:
Code:
using System.Configuration;
using JThomas.DGW.Config;
//...
Configuration cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// wenn der DbProvider in <appSettings> noch fehlt, dann eintragen
if (cfg.Sections["appSettings"] == null) {
ConfigurationSection newSection = cfg.AppSettings;
cfg.Sections.Add("appSettings", newSection);
newSection = cfg.Sections["appSettings"] as ConfigurationSection;
newSection.SectionInformation.ForceSave = true;
cfg.Save(ConfigurationSaveMode.Full);
}
// eigene Section <Senderliste> eintragen, sofern erforderlich
if (cfg.Sections["DGW-Sender"] == null) {
SenderSection newSection = new SenderSection();
newSection.Senderliste.Add(new SenderElement("RBB", "dgw-rbb", "SYSDBA", "masterkey", Arbeiten.Einlesen, "aktuell", DateTime.Now));
newSection.Senderliste.Add(new SenderElement("NDR"));
cfg.Sections.Add("DGW-Sender", newSection);
cfg.Save(ConfigurationSaveMode.Full); // wird ohne
Exception übergangen
}
Die 'eigene Section <senderliste>' habe ich nach den Beispielen aus ConfigurationElement-Klasse wörtlich übernommen und nur die eigene ConfigurationProperty vorgemerkt. Im übrigen habe ich den obigen Code aus dem ersten Beispiel zur ConfigurationManager-Klasse übernommen.
Nach der Arbeit mit dem Debugger scheint alles sauber zu laufen (es gab bei entsprechender Änderung auch eine provozierte
Exception); aber
appl.exe.config wird nicht gespeichert. Hat jemand eine Idee, was ich übersehen habe oder in welche Richtung ich weiter versuchen kann?
[/edit]
Nachtrag: Ich arbeite ausschließlich lokal und bin mit UserName (mit Admin-Rechten) unter WinXP angemeldet. Fehlt vielleicht eine UserPolicy? Wenn ja, wo und welche?
Zusatzfrage: OpenExeConfiguration() liefert nicht nur die Inhalte der
appl.exe.config, sondern in einer gemeinsamen Liste
auch die Inhalte von machine.config, wie ich durch Analyse von cfg.Sections[] und cfg.SectionGroups[] festgestellt habe. Ist das von NET beabsichtigt, oder fehlt eine Einstellung?
Danke! Jürgen
Hinweis: Das Testprogramm habe ich mit VC# Express und NET 2.0 erstellt. Den integrierten Settings-Manager möchte ich nicht nutzen, weil ich meine Namespaces und Bezeichner selbst festlegen und SectionGroups verwenden will.