Trace über user.config anstatt app.config

06/03/2008 - 14:09 von Grote, Sebastian | Report spam
Hallo zusammen,

ich habe nun schon viele Stunden Google bemüht, jedoch leider noch keine
Lösung gefunden. Vielleicht kennt sie ja einer von Euch, bzw. hat den
richtigen Denkanstoß?!

Ausgangssituation:
Tracing (TraceSource(s) & TraceSwitch(es)) ist / sind in der "app.config"
konfiguriert und funktioniert / funktionieren ganz wunderbar. Die
TraceSwitch-Level können über die GUI der Anwendung geàndert werden
(Bearbeitung der app.config / anschließendes Trace.Refresh()).

Problemstellung:
=Dies funktioniert logischerweise nur als Admin, da der normale User ja
keinen Schreibzugriff auf die app.config hat.

Zielsetzung:
Verlagerung der Trace-Config in die user.config bzw. ein vom User
beschreibbares File. Nur: Wie bekomme ich das hin? Was effektiv erreicht
werden soll: Jeder User soll in der laufenden Anwendung ohne Neustart die
Trace-Level *aller* definierten Trace-Switches *on the fly* veràndern
können.

Durchgeführte / gescheiterte Versuche:
=- "system.diagnostics"-Section mitteilen, dass Sie auf
allowExeDefinition="MachineToLocalUser" hören soll (vielleicht auch nicht
korrekt gemacht?!).
- "system.diagnostics" configSource="..." auf ein vom User beschreibbares
File zu verbiegen (z.B. "C:\Users\Public\myapp.config"): Geht nicht, da .NET
2 einen relativen Pfad auf ein File im selben Folder oder in einem Subfolder
erwartet.

Ich baue auf Eure Tipps / Hilfe ;-)

Grüße

Sebastian
Wissen ist Macht - nichts wissen macht auch nichts!
 

Lesen sie die antworten

#1 Frank Dzaebel
06/03/2008 - 19:58 | Warnen spam
Hallo Sebastian,

Dies funktioniert logischerweise nur als Admin, da der normale User ja
keinen Schreibzugriff auf die app.config hat.



korrekt.


Zielsetzung:
> Verlagerung der Trace-Config in die user.config bzw. ein vom User
beschreibbares File. Nur: Wie bekomme ich das hin? Was effektiv erreicht
werden soll: Jeder User soll in der laufenden Anwendung ohne Neustart die
Trace-Level *aller* definierten Trace-Switches *on the fly* veràndern
können.



Du stellst einfach die Properties.Settings.Default z.B.
über ein PropertyGrid nach aussen, sodass der User
diese im UserInterface àndern kann. Am Ende machst Du
ein Properties.Settings.Default.Save(); und fertig. Extrem einfach.
Die ganzen Pfade etc. sind automatisch richtig, wenn
Du den Bereich "Benutzer" (in Deinem Fall) dort anwàhlst.

Du könntest sogar eigene Auflistungs-Typen dort
automatisch serialisieren lassen:

[Typsichere Settings mit eigenen Array-Typen]
http://dzaebel.net/SettingsExample2.htm

Es gibt auch eine Reihe von Editoren, die das Framework
schon out of the box mitbringt, die man letztlich einfach
als Attribut vor die jeweiligen Eigenschaften schreiben
kann:

[UITypeEditor-Hierarchie (System.Drawing.Design)]
http://msdn2.microsoft.com/de-de/library/bfc7teys(VS.80).aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen