VB.net - 11 - Работа с реестром
Реестр Windows (англ. Windows Registry), или системный реестр — иерархически построенная база данных параметров и настроек в большинстве операционных систем Microsoft Windows.
Реестр содержит информацию и настройки для аппаратного обеспечения, программного обеспечения, профилей пользователей, предустановки. Большинство изменений в Панели управления, ассоциации файлов, системные политики, список установленного ПО фиксируются в реестре.
Реестр Windows был введён для упорядочения информации, хранившейся до этого во множестве INI-файлов, обеспечения единого механизма (API) записи-чтения настроек и избавления от проблем коротких имён, отсутствия разграничения прав доступа и медленного доступа к ini-файлам, хранящимся на файловой системе FAT16, имевшей серьёзные проблемы быстродействия при поиске файлов в директориях с большим их количеством. Со временем (окончательно — с появлением файловой системы NTFS) проблемы, решавшиеся реестром, исчезли, но реестр остался из-за обратной совместимости, и присутствует во всех версиях Windows, включая последнюю. Поскольку сейчас не существует реальных предпосылок для использования подобного механизма, Microsoft Windows — единственная (не считая ReactOS) операционная система из используемых сегодня, в которой используется механизм реестра операционной системы.
Мы будем использовать реестр для хранения временных данных (или настроек). По этому важно уметь записывать данные в реестр, считывать их, а так же очищать реестр от вмешательст нашей программы.
В тело программы мы помещаем дополнительный модуль, его код ниже:
Option Explicit On 'Включаем проверку переменных
Module mRegedit
Dim setRegString As Microsoft.Win32.RegistryKey 'Для записи
Dim getRegString As Microsoft.Win32.RegistryKey 'Для чтения
'************************************
'ЗАПИСЬ В РЕЕСТР
Public Function SaveSettingString(ByVal sFolder As String, ByVal sName As String, ByVal sValue As String)
'Записывается в ветку HKEY_LOCAL_MACHINE
setRegString = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(sFolder)
setRegString.SetValue(sName, sValue, Microsoft.Win32.RegistryValueKind.String)
End Function
'*******************************
'ЧИТАЕМ ИЗ РЕЕСТРА
Public Function OpenSettingString(ByVal sFolder As String, ByVal sName As String)
On Error GoTo ErrNotKey 'Перейти к ошибке
'Читаем из ветки HKEY_LOCAL_MACHINE
getRegString = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(sFolder)
OpenSettingString = getRegString.GetValue(sName, Microsoft.Win32.RegistryValueKind.String)
Exit Function 'Выход из процедуры
ErrNotKey:
MsgBox("Ключ ненайден.", 16, "Error")
End Function
'**************************
'УДАЛЕНИЕ ИЗ РЕЕСТРА ПОЛНОСТЬЮ
Public Function DelSubKey(ByVal sFolder As String)
On Error GoTo ErrNotKey 'Перейти к ошибке
'Удаляется из ветки HKEY_LOCAL_MACHINE
Microsoft.Win32.Registry.LocalMachine.DeleteSubKey(sFolder)
Exit Function 'Выход из процедуры
ErrNotKey:
MsgBox("Ключ ненайден.", 16, "Error")
End Function
End Module
Теперь поместим на форму 3 кнопки и 2 текстовых поля, и напишем для них код.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' Создаем новый раздел с именем Test и открываем с доступом на запись
My.Computer.Registry.CurrentUser.CreateSubKey("Test")
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Записываем текст в раздел Test
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Test", "Key", TextBox1.Text)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
' Выводим записаный текст из раздела Test
TextBox2.Text = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Test", "Key", Nothing)
End Sub
' Удаляем раздел Test из реестра
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
' Удаляем раздел Test из реестра
My.Computer.Registry.CurrentUser.DeleteSubKey("Test")
End Sub
Записываем значение в реестр
Считываем значения из реестра
Кроме временных данных и настроек, реестр можно использовать для записи нашей программы в автозагрузку.
Помещаем на форму 2 кнопки - для записи в реестр и удаления.
' Добавляем в автозагрузку
Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
' Возращаем заданый раздел с доступом к нему
Dim Start As Microsoft.Win32.RegistryKey = My.Computer.Registry.CurrentUser. _
OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)
' Имя нашей программы с расширением
Dim Имя_программы As String = IO.Path.GetFileName(Application.ExecutablePath)
' Добавляем новое значение
Start.SetValue(Имя_программы, Application.ExecutablePath)
End Sub
' Убираем из автозагрузки
Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
' Возращаем заданый раздел с доступом к нему
Dim Start As Microsoft.Win32.RegistryKey = My.Computer.Registry.CurrentUser. _
OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)
' Имя нашей программы с расширением
Dim Имя_программы As String = IO.Path.GetFileName(Application.ExecutablePath)
' Удаляем наше ранее созданое значение
Start.DeleteValue(Имя_программы)
End Sub
Смотреть видео
В начало
|