Benutzer mit den meisten Antworten
Anwender-Einstellungen; My.Settings; My.MySettings; App.Config

Frage
-
Anwender-Einstellungen; My.Settings; My.MySettings; App.Config
Geschätzte Mitstreiter,
In My Poject lassen sich Einstellungen ablegen mit Name, Typ, Bereich und Wert,
die man auch in der Datei App.Config jederzeit wieder finden kann.
Per Programm-Code lassen sich die Werte ändern und als geänderter Wert
wieder auslesen.
Dies funktioniert bestens auch in den erstellten .exe-files. Hier werden jeweils die geänderten Werte bei einem Neustart der .exe-Datei heraus gelesen.
Dazu müssen die geänderten Werte aber irgend wo gespeichert werden.
Wo (registry? Aber nicht gefunden!) und in welcher Form (verschlüsselt? ) werden
Anwender-Einstellungen gespeichert.
Ich habe die Antwort biher nicht gefunden und Bitte um Tipps zur Lösung.
Viele Grüße
Peter
Antworten
-
Hallo Peter,
die Werte kommen wie gesagt aus AppData, da würde ich mich nicht unbedingt auf den Explorer verlassen. Such mal ausgehend von Users\DeinBenutzername\AppData (bei Windows 7 - unter früheren Windows Versionen heisst der Ordner anders) nach user.config, also z.B. bei mir
dir c:\users\mathias\appdata\user.config /S
Da siehst Du dann alle .NET Benutzerkonfigurationsdateien. Für Deine Anwendung sollte sie in einem Unterodner liegen, dessen Benennung sich aus dem Namen der Anwendung ergibt. Die user.config einer WindowsApplication1.exe direkt aus VS heraus gestartet landet z.B. unter c:\users\mathias\appdata\Roaming\Microsoft\WpfApplication1.vshost.x_Url_qz4qfj3vcoqkhu1m1wardmxgqaorzdkb\1.0.0.0
Grüße,
Mathias
Mathias Raacke - freiberuflicher .NET Trainer und Berater - Blog http://www.outofcoffeeexception.de Twitter oocx- Als Antwort markiert Peter Lerol Montag, 1. März 2010 15:33
-
Hallo Peter,
das was Du unter Projekt->Anwendungseinstellungen und auch manuellen
Einträgen in der App.Config einträgst wird später in verschiedenen Dateien
abgelegt je nachdem ob sie Anwendungs- oder benutzerspezifisch sind,
siehe Architektur der Anwendungseinstellungen
Wobei noch die allgemeine Benutzer, Maschinen und Organisations-Konfigurationen
hinzukommen, die Du jetzt aber vermutlich nicht suchst ;-)
Erläutert wird das im einzelnen unter Konfigurationsdateien
Die anwendungsspezifischen gehen üblicherweise ins Anwendungs-Verzeichnis
und heissen Applikationsname.Exe.Config. Die benutzerspezifschen landen als
user.config, wie schon Mathias schrieb, in einem Benutzerverzeichnis.
Um an die aktuellen Laufzeit-Informationen zu kommen, verwende
ConfigurationManager. OpenExeConfiguration .
Dazu mußt Du System.Configration als Verweise aufgenommen haben, z. B.:
Dim appConfig As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) Console.WriteLine("Konfiguration: {0}", appConfig.FilePath) Dim userConfig As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal) Console.WriteLine("Benutzerkonfiguration: {0}", userConfig.FilePath)
Beim Debuggen wird im üblicherweise der VsHost.Exe verwendet, so dass dort
eine andere Konfigurationsdatei auftaucht als später bei der Softwareverteilung.
Den kryptischen Verzeichnisnamen für die Benutzerkonfiguration haben wir der
Versionierung zu verdanken, die u. a. bei ClickOnce zum Einsatz kommt.
Gruß Elmar
- Als Antwort markiert Peter Lerol Montag, 1. März 2010 15:33
Alle Antworten
-
Hallo Peter,
vermutlich meinst Du Einstellungen, die pro Benutzer gelten. Diese findest Du irgendwo unterhalb von %localappdata% (z.B. C:\Users\Benutzername\AppData\Local), da gibt es analog zur .config Datei im Verzeichnis der .exe eine .config Datei mit Benutzereinstellungen.
Das Format ist das gleiche wie bei der app.config, also unverschlüsseltes xml.
Hier noch ein paar Links zum Thema:
http://msdn.microsoft.com/de-de/library/system.configuration.configurationmanager.aspx
http://msdn.microsoft.com/de-de/library/system.configuration.configurationuserlevel.aspx
Grüße,
Mathias -
Hallo Matthias, geschätztes Forum,
vielen Dank für Deine Hinweise. Leider bin ich immer noch nicht am Ziel.
Alle *.config-Darteien auf meinem gesamten Rechner zeigen nur die Werte,
die auch unter 'Einstellungen' bei My Project anfangs eingetragen wurden.
Die .exe-Datei öffnet aber richtig mit den im Code mit My.Settings bzw.
My.MySettings abgelegten neuen Werten.
Die Suche im Explorer im gesamten Rechner nach den neuen Werten
verläuft ergebnislos.
Irgend woher muss die .exe aber die Daten = neuen Werte herauslesen können,
nur WOHER nur kommen diese denn?
Ich bitte um weitere Hinweise.
Beste Grüße
Peter -
Hallo Peter,
die Werte kommen wie gesagt aus AppData, da würde ich mich nicht unbedingt auf den Explorer verlassen. Such mal ausgehend von Users\DeinBenutzername\AppData (bei Windows 7 - unter früheren Windows Versionen heisst der Ordner anders) nach user.config, also z.B. bei mir
dir c:\users\mathias\appdata\user.config /S
Da siehst Du dann alle .NET Benutzerkonfigurationsdateien. Für Deine Anwendung sollte sie in einem Unterodner liegen, dessen Benennung sich aus dem Namen der Anwendung ergibt. Die user.config einer WindowsApplication1.exe direkt aus VS heraus gestartet landet z.B. unter c:\users\mathias\appdata\Roaming\Microsoft\WpfApplication1.vshost.x_Url_qz4qfj3vcoqkhu1m1wardmxgqaorzdkb\1.0.0.0
Grüße,
Mathias
Mathias Raacke - freiberuflicher .NET Trainer und Berater - Blog http://www.outofcoffeeexception.de Twitter oocx- Als Antwort markiert Peter Lerol Montag, 1. März 2010 15:33
-
Hallo Peter,
das was Du unter Projekt->Anwendungseinstellungen und auch manuellen
Einträgen in der App.Config einträgst wird später in verschiedenen Dateien
abgelegt je nachdem ob sie Anwendungs- oder benutzerspezifisch sind,
siehe Architektur der Anwendungseinstellungen
Wobei noch die allgemeine Benutzer, Maschinen und Organisations-Konfigurationen
hinzukommen, die Du jetzt aber vermutlich nicht suchst ;-)
Erläutert wird das im einzelnen unter Konfigurationsdateien
Die anwendungsspezifischen gehen üblicherweise ins Anwendungs-Verzeichnis
und heissen Applikationsname.Exe.Config. Die benutzerspezifschen landen als
user.config, wie schon Mathias schrieb, in einem Benutzerverzeichnis.
Um an die aktuellen Laufzeit-Informationen zu kommen, verwende
ConfigurationManager. OpenExeConfiguration .
Dazu mußt Du System.Configration als Verweise aufgenommen haben, z. B.:
Dim appConfig As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) Console.WriteLine("Konfiguration: {0}", appConfig.FilePath) Dim userConfig As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal) Console.WriteLine("Benutzerkonfiguration: {0}", userConfig.FilePath)
Beim Debuggen wird im üblicherweise der VsHost.Exe verwendet, so dass dort
eine andere Konfigurationsdatei auftaucht als später bei der Softwareverteilung.
Den kryptischen Verzeichnisnamen für die Benutzerkonfiguration haben wir der
Versionierung zu verdanken, die u. a. bei ClickOnce zum Einsatz kommt.
Gruß Elmar
- Als Antwort markiert Peter Lerol Montag, 1. März 2010 15:33
-
Hallo Matthias, hallo Elmar,
herzlichen Dank für Eure erlösenden Hinweise.
Endlich sind die jeweils aktuellen user.settings gefunden und
die liebe Seele (meine!) hat endlich ihre Ruhe.
Es ist einfach toll, wie Ihr einem alten (an Jahren) BASIC-Hasen
auf dem interessanten Weg nach VB 2008 Express begleitet.
Danke.
und beste Grüße
Peter