Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
'Корневые ключи реестра
Public Enum RootKeys
HKEY_CLASSES_ROOT = &H80000000
HKEY_CURRENT_USER = &H80000001
HKEY_LOCAL_MACHINE = &H80000002
HKEY_USERS = &H80000003
HKEY_PERFORMANCE_DATA = &H80000004
HKEY_CURRENT_CONFIG = &H80000005
HKEY_DYN_DATA = &H80000006
End Enum
Private Const READ_CONTROL As Long = &H20000
Private Const SYNCHRONIZE = &H100000
Private Const STANDARD_RIGHTS_ALL As Long = &H1F0000
Private Const STANDARD_RIGHTS_EXECUTE As Long = (READ_CONTROL)
Private Const STANDARD_RIGHTS_READ As Long = (READ_CONTROL)
Private Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000
Private Const STANDARD_RIGHTS_WRITE As Long = (READ_CONTROL)
Private Const REG_OPTION_NON_VOLATILE As Long = 0
Private Const REG_OPTION_VOLATILE As Long = 1
Private Const ERROR_SUCCESS As Long = 0
'Константы доступа к ключу
Public Enum AccessKey
KEY_QUERY_VALUE = &H1
KEY_SET_VALUE = &H2
KEY_CREATE_SUB_KEY = &H4
KEY_ENUMERATE_SUB_KEYS = &H8
KEY_NOTIFY = &H10
KEY_CREATE_LINK = &H20
KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
KEY_EXECUTE = ((KEY_READ) And (Not SYNCHRONIZE))
KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
End Enum
'Создает подключ для заданного ключа
'ПАРАМЕТРЫ
'hRoot - один из корневых ключей реестра
'sKeyName - имя, создаваемого ключа, типа "Company\Project\чей-то там еще"
'aDesired - тип доступа к ключу
'fStore - указывает на необходимость сохранения ключа после выключения/перезагрузки
'sClass - тип класса ключа
'ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
'дескриптор ключа при удачном его создании или 0, если ключ создан не был
Public Function CreateKey(ByVal hRoot As RootKeys, _
ByVal sKeyName As String, _
ByVal aDesired As AccessKey, _
Optional ByVal fStore As Boolean = True, _
Optional ByVal sClass As String) As Long
Dim hKey As Long
Dim errValue As Long
Dim dwOptions As Long
Dim sa As SECURITY_ATTRIBUTES
dwOptions = IIf(fStore, REG_OPTION_NON_VOLATILE, _
REG_OPTION_VOLATILE)
errValue = RegCreateKeyEx(hRoot, sKeyName, 0&, sClass, dwOptions, aDesired, sa, hKey, 0&)
If errValue = ERROR_SUCCESS Then
CreateKey = hKey
'Else
'при необходимости здесь можно обработать полученный код ошибки
End If
End Function
'Открывает существующий ключ
'ПАРАМЕТРЫ
'hRoot - один из корневых ключей реестра
'sKeyName - имя, открываемого ключа, типа "Company\Project\чей-то там еще"
'aDesired - тип доступа к ключу
'ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
'дескриптор ключа при удачном его открытии или 0, если ключ открыт не был
Public Function OpenKey(ByVal hRoot As RootKeys, _
ByVal sKeyName As String, _
ByVal aDesired As AccessKey) As Long
Dim hKey As Long
Dim errValue As Long
errValue = RegOpenKeyEx(hRoot, sKeyName, 0&, aDesired, hKey)
If errValue = ERROR_SUCCESS Then
OpenKey = hKey
'Else
'при необходимости здесь можно обработать полученный код ошибки
End If
End Function
!Viper! писал(а):я седни добрый, лови код создающий ключ в заданном месте реестра
- Код: Выделить всё
Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
'Корневые ключи реестра
Public Enum RootKeys
HKEY_CLASSES_ROOT = &H80000000
HKEY_CURRENT_USER = &H80000001
HKEY_LOCAL_MACHINE = &H80000002
HKEY_USERS = &H80000003
HKEY_PERFORMANCE_DATA = &H80000004
HKEY_CURRENT_CONFIG = &H80000005
HKEY_DYN_DATA = &H80000006
End Enum
Private Const READ_CONTROL As Long = &H20000
Private Const SYNCHRONIZE = &H100000
Private Const STANDARD_RIGHTS_ALL As Long = &H1F0000
Private Const STANDARD_RIGHTS_EXECUTE As Long = (READ_CONTROL)
Private Const STANDARD_RIGHTS_READ As Long = (READ_CONTROL)
Private Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000
Private Const STANDARD_RIGHTS_WRITE As Long = (READ_CONTROL)
Private Const REG_OPTION_NON_VOLATILE As Long = 0
Private Const REG_OPTION_VOLATILE As Long = 1
Private Const ERROR_SUCCESS As Long = 0
'Константы доступа к ключу
Public Enum AccessKey
KEY_QUERY_VALUE = &H1
KEY_SET_VALUE = &H2
KEY_CREATE_SUB_KEY = &H4
KEY_ENUMERATE_SUB_KEYS = &H8
KEY_NOTIFY = &H10
KEY_CREATE_LINK = &H20
KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
KEY_EXECUTE = ((KEY_READ) And (Not SYNCHRONIZE))
KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
End Enum
'Создает подключ для заданного ключа
'ПАРАМЕТРЫ
'hRoot - один из корневых ключей реестра
'sKeyName - имя, создаваемого ключа, типа "Company\Project\чей-то там еще"
'aDesired - тип доступа к ключу
'fStore - указывает на необходимость сохранения ключа после выключения/перезагрузки
'sClass - тип класса ключа
'ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
'дескриптор ключа при удачном его создании или 0, если ключ создан не был
Public Function CreateKey(ByVal hRoot As RootKeys, _
ByVal sKeyName As String, _
ByVal aDesired As AccessKey, _
Optional ByVal fStore As Boolean = True, _
Optional ByVal sClass As String) As Long
Dim hKey As Long
Dim errValue As Long
Dim dwOptions As Long
Dim sa As SECURITY_ATTRIBUTES
dwOptions = IIf(fStore, REG_OPTION_NON_VOLATILE, _
REG_OPTION_VOLATILE)
errValue = RegCreateKeyEx(hRoot, sKeyName, 0&, sClass, dwOptions, aDesired, sa, hKey, 0&)
If errValue = ERROR_SUCCESS Then
CreateKey = hKey
'Else
'при необходимости здесь можно обработать полученный код ошибки
End If
End Function
'Открывает существующий ключ
'ПАРАМЕТРЫ
'hRoot - один из корневых ключей реестра
'sKeyName - имя, открываемого ключа, типа "Company\Project\чей-то там еще"
'aDesired - тип доступа к ключу
'ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
'дескриптор ключа при удачном его открытии или 0, если ключ открыт не был
Public Function OpenKey(ByVal hRoot As RootKeys, _
ByVal sKeyName As String, _
ByVal aDesired As AccessKey) As Long
Dim hKey As Long
Dim errValue As Long
errValue = RegOpenKeyEx(hRoot, sKeyName, 0&, aDesired, hKey)
If errValue = ERROR_SUCCESS Then
OpenKey = hKey
'Else
'при необходимости здесь можно обработать полученный код ошибки
End If
End Function
Но все равно читать хелпа НАДО!!!!
Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 182