ник: час
Идея - хорошая, зря Вы на себя наговариваете.........
(MS ACCESS, VBA, VB, ASP) - Класс для работы с реестром. тут на форуме
Класс для работы с реестром
Автор АлексейE
16.01.2004 г.
Работа со строковыми значениями реестра на основе Microsoft Windows Script Host (WSH) Описание: Класс для работы с реестром со строковыми значениями на основе Microsoft Windows Script Host (WSH)
Класс OperationRegistry имеет свойства:
- oprVersion (Версия класса. Только чтение)
- oprRootKeyName (Наименование корневого раздела. Чтение / Запись)
- oprStartup (Путь к разделу Автозагрузки. Только чтение)
Класс OperationRegistry имеет методы:
- oprRegWriteVal (создает раздел / параметр)
- oprRegGetVal (Возвращает значение раздела / параметра)
- oprRegDelete (Удаляет раздел / параметр)
- oprStartupAdd (Добавляет новый параметр автозагрузки)
- oprStartupDelete (Удаляет параметр автозагрузки)
Option Compare Database
Option Explicit
--------------------------------------------------------------------------------
'К сожалению перечисления только для чисел типа Long
'Для перевода в строку воспользуемся функцией-конвертор ConverterRootKeyName()
'Т.к. начинаем отсчет с 0, то по умолчанию будет первичный раздел HKEY_CURRENT_USER
Public Enum RootKeyName
rkn_HKEY_CURRENT_USER
rkn_HKEY_LOCAL_MACHINE
rkn_HKEY_CLASSES_ROOT
rkn_HKEY_USERS
rkn_HKEY_CURRENT_CONFIG
rkn_HKEY_DYN_DATA
'rkn_HKEY_PERFORMANCE_DATA
End Enum
Private WshShell As Object
Private rknRootKeyName As RootKeyName 'Корневой раздел
'/////////////// С В О Й С Т В А ///////////////
' Версия
Public Property Get oprVersion() As String
oprVersion = "2.10.030916 L"
End Property
'Ключ автозагрузки
Public Property Get oprStartup() As String
oprStartup = "SoftwareMicrosoftWindowsCurrentVers ionRun"
End Property
Public Property Get oprRootKeyName() As RootKeyName
oprRootKeyName = rknRootKeyName
End Property
Public Property Let oprRootKeyName(rknNewValue As RootKeyName)
rknRootKeyName = rknNewValue
End Property
'/////////////// С О Б Ы Т И Я ///////////////
Private Sub Class_Initialize()
Set WshShell = CreateObject("WScript.Shell")
End Sub
--------------------------------------------------------------------------------
Private Sub Class_Terminate()
Set WshShell = Nothing
End Sub
--------------------------------------------------------------------------------
'/////////////// М Е Т О Д Ы ///////////////
' Функция oprRegGetVal() возврвщает значение ключа реестра
Public Function oprRegGetVal(strSubKey As String) As Variant
On Error GoTo oprRegGetVal_Error
Dim strName As String, varResult As Variant
strName = CompletePath(strSubKey)
varResult = WshShell.RegRead(strName)
oprRegGetVal_Exit:
oprRegGetVal = varResult
Exit Function
oprRegGetVal_Error:
If Err.Number = -2147024894 Then varResult = ""
Resume oprRegGetVal_Exit
End Function
--------------------------------------------------------------------------------
' Процедура oprRegWriteVal() создает раздел / параметр.
Public Sub oprRegWriteVal(strSubKey As String, varValue As Variant)
Dim strName As String
strName = CompletePath(strSubKey)
WshShell.RegWrite strName, varValue
End Sub
--------------------------------------------------------------------------------
' Процедура oprRegDelete() Удаляет раздел / параметр.
Public Sub oprRegDelete(strSubKey As String)
On Error GoTo oprRegGetVal_Error
Dim strName As String
strName = CompletePath(strSubKey)
WshShell.RegDelete (strName)
oprRegGetVal_Exit:
Exit Sub
oprRegGetVal_Error:
If Err.Number = -2147024894 Then
Else
MsgBox Err.Description
End If
Resume oprRegGetVal_Exit
End Sub
--------------------------------------------------------------------------------
' Процедура oprStartupAdd() Создает новый параметр автозагрузки.
Public Sub oprStartupAdd(strProgramName As String, strPathProgram As String)
Dim strSubKey As String, rknRootKeyName As RootKeyName
strSubKey = Me.oprStartup & strProgramName
rknRootKeyName = Me.oprRootKeyName
Me.oprRootKeyName = rkn_HKEY_LOCAL_MACHINE
Me.oprRegWriteVal strSubKey, strPathProgram
Me.oprRootKeyName = rknRootKeyName
End Sub
--------------------------------------------------------------------------------
' Процедура oprStartupDelete() Удаляет параметр автозагрузки.
Public Sub oprStartupDelete(strProgramName As String)
Dim strSubKey As String, rknRootKeyName As RootKeyName
strSubKey = Me.oprStartup & strProgramName
rknRootKeyName = Me.oprRootKeyName
Me.oprRootKeyName = rkn_HKEY_LOCAL_MACHINE
Me.oprRegDelete strSubKey
Me.oprRootKeyName = rknRootKeyName
End Sub
--------------------------------------------------------------------------------
'/////////////// Д О П . Ф У Н К Ц И И ///////////////
' Функция ConverterRootKeyName() возврвщает значение типа строка
Private Function ConverterRootKeyName(lngKey As Long) As String
Dim strKeyName As String
Select Case lngKey
Case 0
strKeyName = "HKCU"
Case 1
strKeyName = "HKLM"
Case 2
strKeyName = "HKCR"
Case 3
strKeyName = "HKEY_USERS"
Case 4
strKeyName = "HKEY_CURRENT_CONFIG"
Case 5
strKeyName = "HKEY_DYN_DATA"
Case 6
strKeyName = "HKEY_PERFORMANCE_DATA"
Case Else
strKeyName = ""
End Select
ConverterRootKeyName = strKeyName
End Function
--------------------------------------------------------------------------------
' Функция CompletePath() возврвщает полный путь к параметру
Private Function CompletePath(strPathKey As String) As String
Dim strName As String
strName = Left(strPathKey, 1)
' Добавим обратный слеж если его нет
If strName = "" Then
strName = ConverterRootKeyName(Me.oprRootKeyName) & strPathKey
Else
strName = ConverterRootKeyName(Me.oprRootKeyName) & "" & strPathKey
End If
CompletePath = strName
End Function
--------------------------------------------------------------------------------
Пример использования
Public Sub OperationRegistry()
Dim orgOperReg As OperationRegistry
Set orgOperReg = New OperationRegistry
'Определяем корневай узел HKEY_CURRENT_USER (Но можно не определять,
'по умолчанию HKEY_CURRENT_USER)
orgOperReg.oprRootKeyName = rkn_HKEY_CURRENT_USER
' Создаем раздел / параметр
orgOperReg.oprRegWriteVal "SoftwareMyProgramProgram1", ""
orgOperReg.oprRegWriteVal "SoftwareMyProgramProgram2StringKey", "String Key"
' Читаем раздел / параметр
Debug.Print orgOperReg.oprRegGetVal("SoftwareMyProgramProgram1")
Debug.Print orgOperReg.oprRegGetVal("SoftwareMyProgramProgram2StringKey")
' Удаляем раздел / параметр
orgOperReg.oprRegDelete "SoftwareMyProgramProgram1"
orgOperReg.oprRegDelete "SoftwareMyProgramProgram2StringKey"
orgOperReg.oprRegDelete "SoftwareMyProgram"
Set orgOperReg = Nothing
End Sub
--------------------------------------------------------------------------------
' Добавляем Автозагрузку
Public Sub AddStartup()
Dim orgOperReg As OperationRegistry
Set orgOperReg = New OperationRegistry
orgOperReg.oprStartupAdd "База ACCESS", "D:Мои документыAccessRefer2002.mde"
Set orgOperReg = Nothing
End Sub
--------------------------------------------------------------------------------
' Удаляем Автозагрузку
Public Sub DeleteStartup()
Dim orgOperReg As OperationRegistry
Set orgOperReg = New OperationRegistry
orgOperReg.oprStartupDelete "База ACCESS"
Set orgOperReg = Nothing
End Sub