Сохранение настроек программы в реестр

Опубликовано в Записки интернет сёрфера
/
8 Май 2014

Добрый день, в этой статье я продолжу рассказывать про полезные решения для программ написанных на языке visual basic.net и из сегодняшней статьи вы узнаете про то, как работать с системным реестром windows. А если быть ещё точнее, то научитесь записывать в него значения и в последствии читать их.

Немного про реестр

Сохраняем настройки в реестр

Но прежде чем начать, я дам несколько общих сведений о том что из себя представляет реестр windows и какие инструменты мы будем использовать для написания и отладки программы. Реестр это база данных которую операционная система использует для хранения и какой либо служебной информации на компьютере. В windows по умолчанию реестр содержит такие данные как профили пользователей, сведения о конфигурации оборудования, сведенья о расширениях файлов и ассоциации их с установленными программами. И в общем всё то, что нельзя трогать простому пользователю, но при должном умении и правильном подходе  при помощи реестра можно сделать много полезных вещей как для пользователя, так и для внутренней (никому не видной) работы программы.

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

выполнить

Из инструментов, по мимо Visual studio (у меня 2013) на потребуется ещё и встроенный в любую операционную систему семейства Windows редактор реестра, вызвать его можно открыв окошко «выполнить» и прописав в нём regedit.

Работа с реестром

Итак перейдём пожалуй к практике. Ниже я расскажу про основные действия с реестром, а именно создание каталогов,чтение, добавление и удаление ключей. Я не буду досконально описывать каждое свое действие, но в тоже время постараюсь как можно детальнее объяснить работу каждой и функций. Пожалуй начнём.

Создание раздела реестра

Для начала нужно создать новый проект и выбрать приложение WindowsForms.  Теперь расположим на форме первую кнопку, всего их будет три и добавим на неё следующий код.

My.Computer.Registry.CurrentUser.CreateSubKey("Software\iblogis")

Данный код создает в подраздел iblogis в стандартном разделе Software, в случае отсутствия раздела Software он будет создан. Благодаря расширению этого кода (например добавления ещё одной части пути ) вы можете создавать неограниченное количество подразделов. Также в комбинации с SetValue вы сможете одной строчкой прописывать полный путь до ключа.

Создания ключа реестра и записи в него параметров

Ключ реестра

Для создания ключа, как я писал выше вместе с функцией CreateSubKey нужно использовать ещё и SetValue. Для этого нужно поместить на нашу форму ещё одну кнопку и добавить к ней вот такое действие:

My.Computer.Registry.CurrentUser.CreateSubKey("Software\iblogis").SetValue("test", "0")

Благодаря этому коду мы не только создаем раздел iblogis но и вносим в него ключ test с параметром 0. Параметр у ключа реестра может быть как строчный (любое слово), так и числовой (как в нашем случае).

 Удаление ключа и раздела реестра

Удалить ключ или раздел реестра вы можете так же легко как и создавали его,  для этого нужно использовать код ниже.

My.Computer.Registry.CurrentUser.DeleteSubKey("iblogis")

Данный кусок кода удаляет раздел реестра вместе со всем его содержимым, то есть удаляться все ключи и подразделы. Но если вам вдруг понадобилось удалить только ключ в каком либо разделе тогда его достаточно просто обнулить, в этом вам поможет следующий код.

My.Computer.Registry.CurrentUser.CreateSubKey("Software\iblogis").SetValue(" ", " ")

Он не удаляет не удаляет ключ, а перезаписывает его, но уже вместо каких либо записей там будет просто пустая ячейка.

Чтение из реестра

Чтения записей в реестре осуществляется при помощи команды GetValue, она получает значение ключа по введённому вами пути. Записывается всё это вот таким образом.

My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\iblogis", "test", Nothing)

В данном примере мы прочитали значение ключа test, который находится по адресу HKEY_CURRENT_USER\Software\iblogis.

Создание программы

Хранение настроек в реестре

И так, работать с реестром мы научились, теперь на основе полученных знаний мы попробуем создать простейшую программу, которая будет запоминать спои настройки. В качестве изменяемого параметра я буду использовать обычный checkBox, то есть проверять значение свойства Checked

Для этого создадим новый проект и расположим на форме checkBox.  Далее производим двойной клик по нашей форме и на событие загрузки формы ставим вот такое условие.

If CheckBox1.Checked = False Then
My.Computer.Registry.CurrentUser.CreateSubKey("Software\iblogis").SetValue("test", "1")
Else
My.Computer.Registry.CurrentUser.CreateSubKey("Software\iblogis").SetValue("test", "0")
End If

5

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

If My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\iblogis", "test", Nothing) = " " Then
My.Computer.Registry.CurrentUser.CreateSubKey("Software\iblogis").SetValue("test", "0")
Else
If My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\iblogis", "test", Nothing) = "0" Then
CheckBox1.Checked = True
End If
If My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\iblogis", "test", Nothing) = "1" Then
CheckBox1.Checked = False
End If
End If

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

комментария 3 Добавить комментарий

  • «visual basik.net» — барсик :3

    Кнопки в коде, перекрывают код только у меня или это специально так сделано?

    • Вы про кнопки просмотра исходного кода и печати? Если да, то так и надо. 🙂
      Для копирования лучше открыть код во всплывающем окне (view source), а то вместе с содержимым копируются номера строк, да и переносы не очень кстати.

  • Было время, когда приходилось работать с реестром. Эта статья напомнила это. Весьма полезно! В глаза сначала бросился счетчик с неведомыми цифрами, потом по ссылке понял, что это фишка такая)

Оставить комментарий