Visual Basic и Системный Реестр Windows

Системный Реестр (Registry) Windows это база данных для хранения системной и пользовательской информации в Windows. Системный Реестр состоит из двух файлов – SYSTEM.DAT, в нем содержится информация о конкретном компьторе, и USER.DAT, содержащий пользовательские установки и данные.
Для работы с Системным Реестром обычно применяют специальный редактор Системного Реестра – REGEDIT.EXE, или специальные функции Win32 API, или некоторые встроенные функции и операторы Visual Basic.
Остановимся на последнем и рассмотрим работу с данными в Системном Реестре с помощью Visual Basic. Для этого Вам придется сделать следующее
Запустите редактор Системного Реестра, он находится в каталоге Windows – C WindowsRegedit.exe. При запуске редактора в окне появятся шесть ключей-папок (эти ключи как раз и представляют содержимое файлов SYSTEM.DAT и USER.DAT). Выберите ключ HKEY_CURRENT_USER (этот ключ входит в состав файла USER.DAT) и щелкните на плюсике +». В раскрывшемся списке выберите подключ — Software – и раскройте его. Найдите во вновь открывшемся списке папку – VB and VBA Program Setting – это и есть раздел Системного Реестра куда с помошью встроенных операторов и функций Visual Basic Вы можете записывать и считывать необходимую Вам информацию.
Запустите Visual Basic и откройте новый проект. Поместите на форму четыре командные кнопки и в свойстве Caption» , каждой из них введите соответственно SaveSetting, GetSetting, GetAllSettings, DeleteSetting. Запомните проект под именем, скажем, MYREG.
А теперь приступим к работе.
Запись значений с помощью оператора SaveSetting
Дважды щелкните на командной кнопке SaveSetting и в раскрывшемся окне введите следующий код
Private Sub Command1_Click()
SaveSetting App.Title, «PortSettings», «Connect using», «COM1»
End Sub
Запустите программу на выполнение и нажмите на кнопку SaveSetting, потом переключитесь на окно редактора Системного Реестра. Откройте папку VB and VBA Program Setting и там Вы увидите вновь созданную папку MYREG, а в ней подраздел с именем PortSettings. Открыв его, в левом окне редактора, Вы прочтете запись которую только что создали — Connect using «COM1».
***Если Вы правильно выполнили все что написано, но ничего не увидели, не волнуйтесь. Нажмите клавишу F5 (Refresh) и перед вами появится искомая запись.
Теперь расмотрим по-подробнее, что Вы написали в окне кода. Синтаксис оператора SaveSetting следующий
SaveSetting VBKeyName, Section, Key, Setting, где
SaveSetting – имя самого оператора;
VBKeyName — строковое значение, которое является именем внутреннего подраздела VB and VBA Program Setting. В нашем случае онo будет носить имя нашей программы – MYREG, т.к. мы использовали свойство объекта App.Title;
Section — строковое значение, которое является именем внутреннего подраздела VBKeyName. В нашем случае оно носит имя PortSettings;
Key — строковое значение, которое представляет имя параметра в созданном подразделе PortSettings.В подразделе может быть много параметров.
Setting — строковое значение, которое Вы хотите присвоить данному параметру. В нашем случае параметру Connect using приваиваем значение COM1;
Чтение значений с помощью функции GetSetting()
***При выполнении нижеследующих действий объявите в разделе Declaration формы переменные CrtMsg As String, MySet As Variant
Чтобы получить значение определенного параметра, нужно использовать функцию GetSetting().Дважды щелкните на командной кнопке GetSetting и в раскрывшемся окне введите следующий код
Private Sub Command2_Click()
MySet = GetSetting(App.Title, «PortSettings», «Connect using», CrtMsg)
Debug.Print MySet
End Sub
Запустите программу на выполнение и намите на кнопку GetSetting. В окне Immediate Вы увидете введенное ранее (оператором SaveSetting) значение – COM1.
Теперь расмотрим подробнее, что Вы написали в окне кода. Синтаксис оператора GetSetting следующий
MySet = GetSetting ( VBKeyName, Section, Key [, Default ] )
MySet — строка для хранения возвращаемого функцией GetSetting значения;
GetSetting – имя самой функции;
VBKeyName — строковое значение, которое является именем внутреннего подраздела VB and VBA Program Setting. Мы используем свойство объекта App.Title, т.к. хотим прочесть информацию из созданного нашей программой раздела ;
Section — строковое значение, которое является именем внутреннего подраздела VBKeyName. В нашем случае он носит имя PortSettings;
Key — строковое значение, которое представляет имя параметра в созданном подразделе PortSettings.В подразделе может быть много параметров и по-этому, мы указываем на желаемое — Connect using;
Default — необязательный аргумент, представляющий строковое значение, которое будет возвращено функцией в случае ошибки (если такого параметра нет). Функция возвращает строковое значение, присвоенное аргументу Default. К примеру CrtMsg = «Такого параметра не существует.».
Чтение значений с помощью функции GetAllSettings()
***Предварительно добавте следующий код к имеющемуся коду командной кнопки
SaveSetting
SaveSetting App.Title, «PortSettings», «Data bits», «8»
SaveSetting App.Title, «PortSettings», «Parity», «None»
SaveSetting App.Title, «PortSettings», «Stop bits», «1»
SaveSetting App.Title, «PortSettings», «Flow control», «None»
Произведите операцию записи данных в Системный Реестр.
Для получения из реестра массива, содержащего все значения параметров из определенного подраздела (например, PortSettings) применяется функция GetAllSettings(). Для этого дважды щелкните на командной кнопке GetAllSettings и в раскрывшемся окне введите следующий код
Private Sub Command3_Click()
Dim intSettings As Integer
MySet = GetAllSettings(App.Title, «PortSettings»)
For intSettings = LBound(MySet, 1) To UBound(MySet, 1)
Debug.Print MySet(intSettings, 0), MySet(intSettings, 1)
Next intSettings
End Sub
Запустите программу на выполнение и нажмите на кнопку GetAllSettings. В окне Immediate Вы увидете введенные ранее (оператором SaveSetting) значения
Connect using COM1
Bits per second 2400
Data bits 8
Parity None
Stop bits 1
Flow control None
Теперь расмотрим подробнее, что Вы написали в окне кода. Синтаксис оператора GetAllSetting следующий
MySet = GetAllSettings ( VBKeyName, Section)
MySet — возвращаемый функцией массив значений, он должен быть типа Variant
GetSetting – имя самой функции;
VBKeyName — строковое значение, которое является именем внутреннего подраздела VB and VBA Program Setting. Мы используем свойство объекта App.Title, т.к. хотим прочесть информацию из созданного нашей программой раздела ;
Section — строковое значение, которое является именем внутреннего подраздела VBKeyName. В нашем случае он носит имя PortSettings;
Остальные операторы помогают обработать массив значений и получить информацию в удобном виде.
Удаление раздела параметров с помощью оператора DeleteSetting
Вы уже создали целый массив параметров! А что делать если он больше ненужен? Для удаления параметров применяется оператор DeleteSetting. Дважды щелкните на командной кнопке DeleteSetting и в раскрывшемся окне введите следующий код
Private Sub Command4_Click()
DeleteSetting App.Title,»PortSettings», «Flow control »
End Sub
Запустите программу на выполнение и намите на кнопку DeleteSetting, потом переключитесь на окно редактора Системного Реестра и Вы увидете, что параметр Flow control отсутствует.
***
Если Вы правильно выполнили все что написано, но ничего не увидели, не волнуйтесь. Нажмите на клавишу F5 — Refresh.
Теперь расмотрим подробнее, что Вы написали в окне кода. Синтаксис оператора DeleteSetting следующий
DeleteSetting VBKeyName, Section, Key , где
DeleteSetting — имя самого оператора;
VBKeyName — строковое значение, которое является именем внутреннего подраздела VB and VBA Program Setting. Мы используем свойство объекта App.Title, т.к. хотим удалить информацию из созданного нашей программой раздела ;
Section — строковое значение, которое является именем внутреннего подраздела VBKeyName. В нашем случае он носит имя PortSettings;
Key — строковое значение, которое представляет имя параметра в подразделе PortSettings.В подразделе может быть много параметров и по-этому, мы указываем на желаемое – Flow control;
Если Вы захотите удалить сразу весь подраздел, а не некоторые параметры, то для этого используйте следующий синтаксис оператора DeleteSetting
DeleteSetting VBKeyName, Section ;
Поместив код DeleteSetting App.Title,»PortSettings» в Private Sub Command4_Click(), Вы удалите весь подраздел PortSettings.
А если Вы захотите убрать вообще все Ваши установки из Сиастемного Реестра, то воспользуйтесь следующим кодом
Private Sub Command4_Click()
DeleteSetting App.Title
End Sub
«