Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сохранение пользовательских настроек

44K
22 августа 2012 года
Mixim
18 / / 01.01.2010
В разрабатываемую программу пользователь должен вводить некоторые индивидуальные данные(логин/пароль, в частности). Хочу предоставить ему возможность ввести их и сохранить, чтобы ему не приходилось по сто раз это повторять - необходимо добавить в проект файл конфигурации приложения, который либо будет прикреплен к исполняемому файлу, либо храниться в дирректории с пользовательскими настройками. Исполняю это:
1)добавляю файл "app.config" со следующим содержимым:
Код:
<?xml version="1.0" encoding="utf-8"?>
<configuration>

<appSettings>

    <add key="login" value="myLogin"/>
    <add key="password" value="myPassword"/>
       
</appSettings>     
   
</configuration>
2)извлекаю и вывожу эти настройки:
 
Код:
Console.WriteLine("Ваш логин:{0}\nПароль:{1}",ConfigurationManager.AppSettings["login"], ConfigurationManager.AppSettings["password"]);
и получаю ровно то, чего и жду:

 
Код:
Ваш логин:myLogin
Пароль:myPassword
Но как изменить и сохранить эти настройки? Пробовал следующим образом:

 
Код:
ConfigurationManager.AppSettings["login"]="new login";
однако получаю ошибку:
Цитата:
System.NotSupportedException has been thrown
Collection is read-only


Пробую сделать следующим образом:
1)меняю "app.config" на:

Код:
<?xml version="1.0" encoding="utf-8"?>
<configuration>

<configSections>

    <section name="userSections" type="System.Configuration.NameValueSectionHandler, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
       
</configSections>
   
<userSections>

    <add key="userLogin" value="myUserLogin"/>

</userSections>
   
   
   
</configuration>
2)пишу код:
 
Код:
NameValueCollection userValueCollection=(NameValueCollection)ConfigurationManager.GetSection("userSections");
       
            string asd=userValueCollection.Get("userLogin");
           
            userValueCollection.Set("userLogin", "new login");
все отлично изменено, но как теперь это сохранить - найти метод Save/SaveConfig у NameValueCollection не получилось и выполнить приведение:
 
Код:
Configuration cfg=(Configuration)userValueCollection;
также не вышло: "Cannot convert type 'System.Collections.Specialized.NameValueCollection' to 'System.Configuration.Configuration'" - "Невозможно преобразовать ... в ..."
Так каким же тогда образом возможно сохранить пользовательские настройки приложения?
Использую: Gtk#, MonoDevelop
Заранее спасибо за помощь
414
22 августа 2012 года
CassandraDied
763 / / 24.05.2012
Можно записать логин и пароль в массив или свой класс настроек, а потом его сериализовать в каталог с пользовательскими настройками. Почему решил использовать файл конфига программки?
277
22 августа 2012 года
arrjj
1.7K / / 26.01.2011
А работать с Properties.Settings.Default. не пробовал?
414
22 августа 2012 года
CassandraDied
763 / / 24.05.2012
Цитата: arrjj
А работать с Properties.Settings.Default. не пробовал?


Чем это лучше, чем свой XML?

277
22 августа 2012 года
arrjj
1.7K / / 26.01.2011
Цитата: CassandraDied
Чем это лучше, чем свой XML?


Любое стандартное средство лучше своего велосипеда. Точно также будет хранить настройки в xml, есть возможность сбросить настройки на стандартные ипр.

ТС:
А зачем ты кастуешь ConfigurationSection в NameValueCollection? Почему просто не работаешь с ConfigurationSection?? У Configuration есть метод Save().

Хочешь изврата? Работай с xml через dataset :)

414
22 августа 2012 года
CassandraDied
763 / / 24.05.2012
Цитата: arrjj
Цитата: CassandraDied
Чем это лучше, чем свой XML?


Любое стандартное средство лучше своего велосипеда. Точно также будет хранить настройки в xml, есть возможность сбросить настройки на стандартные ипр.


А он именно для хранения пользовательских логина и пароля предназначен? Именно для хранения логинов и паролей нет специально предназначенных плюшек?

277
22 августа 2012 года
arrjj
1.7K / / 26.01.2011
Цитата: CassandraDied

А он именно для хранения пользовательских логина и пароля предназначен? Именно для хранения логинов и паролей нет специально предназначенных плюшек?


А есть? Логины и пароли вообще нельзя хранить в файлах :D

414
22 августа 2012 года
CassandraDied
763 / / 24.05.2012
Цитата: arrjj
Цитата: CassandraDied

А он именно для хранения пользовательских логина и пароля предназначен? Именно для хранения логинов и паролей нет специально предназначенных плюшек?


А есть? Логины и пароли вообще нельзя хранить в файлах :D


Не знаю, поэтому и спрашиваю. Где же их хранить, если не в файлах? На бумажке, дежащей под клавой, записывать? :)

277
22 августа 2012 года
arrjj
1.7K / / 26.01.2011
Цитата: CassandraDied

Не знаю, поэтому и спрашиваю. Где же их хранить, если не в файлах? На бумажке, дежащей под клавой, записывать? :)


Я обычно запоминаю. В конце концов всегда есть кнопочка "Забыли пароль?" :D

72K
22 августа 2012 года
CorsaiR
59 / / 07.03.2012
Секции в конфиге могут шифроваться http://msdn.microsoft.com/ru-ru/library/system.configuration.sectioninformation.protectsection.aspx
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог