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

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

Системный Реестр (Registry) Windows это база данных для хранения системной и пользовательской информации в Windows. Системный Реестр состоит из двух файлов – SYSTEM.DAT, в нем содержится информация о конкретном компьторе, и USER.DAT, содержащий пользовательские установки и данные. 

Для работы с Системным Реестром обычно применяют специальный редактор Системного Реестра – REGEDIT.EXE, или специальные функции Win32 API, или некоторые встроенные функции и операторы Visual Basic. 

Остановимся на последнем и рассмотрим работу с данными в Системном Реестре с помощью Visual Basic. Для этого Вам придется сделать следующее: 

Запустите редактор Системного Реестра, он находится в каталоге Windows – C:\Windows\Regedit.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