Próbuję utrwalić ustawienia użytkownika do pliku konfiguracyjnego za pomocą menedżera konfiguracji ConfigurationManager.Jak pisać do pliku User.Config za pomocą programu ConfigurationManager?
Chcę, aby zakres tych ustawień był tylko dla użytkownika, ponieważ zmian aplikacji nie można zapisać w systemie Vista/Win 7 bez uprawnień administratora.
To wydaje mi się konfiguracja użytkownika, która wydaje się być zapisana tutaj w Win 7 ([Dysk]: \ Użytkownicy \ [Nazwa użytkownika] \ AppData \ Local \ [Nazwa aplikacji] \ [NazwaZakładu] [hash] \ [ wersja \)
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
Ilekroć próbuję zapisać zmiany w ogóle do tej konfiguracji otrzymuję ten wyjątek:
InnerException: System.InvalidOperationException
Message="ConfigurationSection properties cannot be edited when locked."
Source="System.Configuration"
StackTrace:
at System.Configuration.SectionInformation.VerifyIsEditable()
at System.Configuration.MgmtConfigurationRecord.GetConfigDefinitionUpdates(Boolean requireUpdates, ConfigurationSaveMode saveMode, Boolean forceSaveAll, ConfigDefinitionUpdates& definitionUpdates, ArrayList& configSourceUpdates)
próbowałem dodanie niestandardowego ConfigurationSection do tej konfiguracji. Próbowałem dodać do AppSettingsSection. Ilekroć dzwonię pod numer config.Save()
, zgłasza wyjątek powyżej.
Wszelkie pomysły?
Próbowałem używać klasy ApplicationSettingsBase za pomocą Projekt-> Ustawienia projektanta, ale nie wydaje się, że można zapisać niestandardowe typy z tym. Chcę podobną funkcjonalność z możliwością zapisywania niestandardowych typów.
Okazuje się, że możesz użyć niestandardowego dla typów z Projekt-> Projektant ustawień. Nie wyświetlają ich w oknie dialogowym typu, ale jeśli wpiszesz właściwą nazwę/przestrzeń nazw, możesz użyć dowolnego typu. Typ powinien być XmlSerializable lub można go konwertować do/z łańcucha znaków za pomocą TypeConvertera. –