Реализовать checkBox в роли "запомнить"

Рейтинг: 0Ответов: 2Опубликовано: 09.02.2015

Привет всем!

Подскажите, пожалуйста, как мне сделать checkBox так же, как на программах и сайтах, там, где нужно произвести вход по имени и паролю, там всегда есть функция запомнить, чтобы при следующем входе программа уже не спрашивала имя и пароль.

Я изначально делал так: кликнул по checkBox, и образовался простой текст файл с именем, потом при следующем входе прога проверяла, если есть такой файл-то - не спрашивала пароль. Но здесь на форуме я вычитал, что при уже готовой проинсталированной программе у меня не будет доступа для записи в директории bin или дебаг, а писать код, чтобы файл сохранялся в другом месте, я еще не могу сообразить, как это делается. Да и, разумеется, есть правильный подход к этому вопросу.

Спасибо

Ответы

▲ 3Принят

Microsoft рекомендует следующий способ сериализации:
1. Выбираете пункт Settings в Solution.
2. Создаете переменную необходимого типа (в вашем случае bool).

alt text

  private void Form1_Load(object sender, EventArgs e)
    {
        checkBox1.Checked = Properties.Settings.Default.IsRemember;
    }

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        Properties.Settings.Default.IsRemember = checkBox1.Checked;
        Properties.Settings.Default.Save();
    }

Пример приложения.

Еще способы сериализации.

▲ 2

Вопрос здесь не в checkbox'е, конкретная реализация в интерфейсе — дело десятое. Вам стоит подумать о том, как будет инсталлирована программа и где она будет хранить данные.

Если вы собираетесь хранить данные локально, это стоит делать в подкаталоге %APPDATA% с именем, как у вашей программы (по хорошему, конечно, вашей компании, но это, как я понимаю, в будущем). Данные будут доступны, понятно, только текущему пользователю ОС (ну и администратору, разумеется) — и это правильно.

По поводу хранения пароля, всё сложно. Если вы кладёте пароль в открытом виде, это «приглашение» украсть его. С другой стороны, даже если вы будете шифровать пароль, надёжного хранения пароля на локальной машине добиться вовсе невозможно, т. к. если ваша программа может его прочитать и расшифровать, а машина скомпроментирована, то и злоумышленник точно так же сможет. Поэтому возможно стоит шифровать, но не обещать никакой «безопасности» пользователю.

Хорошим компромиссом является хранение только имени пользователя, но не пароля. На то он и пароль, что известен только человеку.