Registro de operaciones de Vb API
A diferencia del método de acceso al registro interno de VB, puede
leer y escribir cualquier clave de registro a través del valor de una cadena.
Opción explícita
-
-Declaración de API de registro...
-
Declaración privada Función RegCloseKey Lib " advapi 32 "(ByVal hKey As Long) As Long
Función de declaración privada RegCreateKeyEx Lib "advapi32 "Alias" RegCreateKeyExA" (ByVal hKey es larga, ByVal lpSubKey es cadena, ByVal reservado es larga, ByVal lpClass es String, ByVal dwOptions es Long, ByVal samDesired es Long, ByRef lpSecurityAttributes es SECURITY_ATTRIBUTES, ByRef phkResult es Long, ByRef lpdwDisposition es Long)
Función de declaración privada RegOpenKeyEx Lib "advapi32 "alias" RegOpenKeyExA" ( ByVal hKey es largo, ByVal lpSubKey es cadena, ByVal ulOptions es largo, ByVal samDesired es largo, ByRef phkResult es largo) es largo
función de declaración privada RegQueryValueEx Lib " advapi 32 " Alias " regqueryvaluexa "(ByVal hKey es largo, ByVal lpValueName es cadena, ByVal lpReserved es largo, ByRef lpType es largo, ByVal lpData es cadena, ByRef lpcbData es largo) es largo
Función de declaración privada RegSetValueEx Lib "advapi32 "alias" RegSetValueExA" ( ByVal hKey es Long, ByVal lpValueName es String, ByVal Reserved es Long, ByVal dwType es Long, ByVal lpData es String, ByVal cbData es Long) es Long
-
-Registry Api constantes...
-
Tipo de datos de registro...
Const REG_SZ = 1' Cadena Unicode terminada en nulo.
"const REG_EXPAND_SZ=2" Cadena Unicode terminada en nulo.
Const REG_DWORD = 4' Número de 32 bits
Valor del tipo de creación del registro...
Const REG_OPTION_NON_VOLATILE = 0 'Cuando el sistema se reinicia, esta palabra clave se conservan.
Opciones de seguridad de palabras clave del registro...
READ_CONTROL constante = ampH20000
Valor de consulta de palabra clave constante = ampH1
Const KEY_CREATE_SUB_KEY = ampH4
const KEY _ ENUMERATE _ SUB _ KEYS = ampH8
Const KEY _ NOTIFY = ampH10
Const KEY _ CREATE _ LINK = ampH20
Const KEY _ READ = KEY _ QUERY _ VALUE KEY _ ENUMERATE _ SUB _ KEYS KEY _ NOTIFY READ _ CONTROL
Const Key Write = Clave Establecer valor Clave Crear subclave Control de lectura
Const KEY_EXECUTE = KEY_READ
const KEY _ ALL _ ACCESS = KEY _ QUERY _ VALUE KEY _ SET _ VALUE _
keyword_create_subkeywordkeyword_enum_subkeyword_
KeyNotificationKey Crear control de lectura de enlace
Tipo de raíz de clave de registro...
Constante HKEY_class_root = ampH80000000
Constante HKEY usuario actual = ampH80000001
p>Const HKEY _ LOCAL _ MACHINE = ampH80000002
const HKEY _user = ampH80000003
Const HKEY _PERFORMANCE_DATA = ampH80000004
Valor de retorno...
Const ERROR_NONE = 0
Const ERROR_BADKEY = 2
Const Error Acceso denegado = 8
Const ERROR_SUCCESS = 0
-
-Tipo de atributo de seguridad del registro...
-
Atributo de seguridad de tipo privado
n tiene la misma longitud
lpSecurityDescriptor es largo
bInheritHandle es booleano
Tipo de finalización
-
Uso de ejemplo: depuración. Imprimir clave de actualización (HKEY_class_root, "nombre de clave", "nuevo valor")
-
Clave de actualización de función pública (la raíz de la clave es larga, KeyName es String, SubKeyName es String, SubKeyValue es String) es booleano
Dim rc As Long 'Código de retorno
' Dim hKey As Long 'Procesa claves de registro.
' Dim hDepth As Long '
Dim lpAttr As SECURITY_ATTRIBUTES Tipo de seguridad del registro
' Establece los atributos de seguridad en los valores predeterminados.
...
lpAttr.lpSecurityDescriptor = 0 '...
' lpAttr.bInheritHandle = True '...
-
-Crear/abrir clave de registro...
-
rc = RegCreateKeyEx(KeyRoot, KeyName, _
0, REG_SZ, _ p>
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, lpAttr, _
HKey, hDepth)' Crear/Abrir //KeyRoot//KeyName.
if(RC lt; gtError_success) luego vaya a "crear error de clave" manejo de errores...
-
-Crear/modificar valor de palabra clave.. .
-
Si (valor de subclave = " ")entonces valor de subclave = " " "Necesita ingresar un espacio para que RegSetValueEx() funcione. ...
Crear/modificar valores de palabras clave
rc = RegSetValueEx(hKey, SubKeyName, _
0, REG_SZ, _
SubKeyValue, LenB (StrConv( SubKeyValue, vbFromUnicode)))
if(RC lt; gtError_success) luego vaya al manejo de errores "crear error de clave"
-
-Cerrar clave de registro. ..
-
RC = RegCloseKey(hKey)"Clave de cierre.
"UpdateKey = True" se devolvió correctamente.
Salida de "función de salida"
CreateKeyError:
"UpdateKey = False" establece el código de retorno de error.
Rc = RegCloseKey(hKey)'Intenta cerrar la palabra clave.
Función final
-
Ejemplo de uso: depuración. Imprimir GetKeyValue(raíz de clase HKEY. ListviewCtrl.1\CLSID ","")
-
Función pública GetKeyValue(KeyRoot es Long, KeyName es String, SubKeyRef es String) es String
Contador de bucle Dim i As Long
Dim rc As Long 'Código de retorno
Dim hKey As Long 'Maneja la clave de registro abierta
>.' Dim hDepth As Long '
Dim sKeyVal como una cadena
El tipo de valor Dimlkey es largo 'Tipo de datos de clave de registro
Dim tmpVal Almacenado temporalmente como una clave de registro de cadena.
Tamaño de variable de clave de registro "Dim KeyValSize As Long"
Abra KeyRoot {palabra clave de registro en HKEY _ LOCAL _ MACHINE...}
-
RC = regopenkeyex (keyroot, keyname, 0, key_all_access, HKEY)' Abra la clave de registro.
if(RC lt; gtError _ Success) then gotogetkeyerror 'Manejar el error. ...
TmpVal = String$(1024, 0)' asigna espacio variable.
KeyValSize = 1024 'Marcar tamaño de variable
-
Recuperar el valor de la clave de registro. ...
-
rc = RegQueryValueEx(hKey, SubKeyRef, 0,_
LKeyValType, tmpVal, KeyValSize)' Obtener/crear el valor del palabra clave.
if(RC lt; gtError_success) then gotogetkeyerror 'manejo de errores
tmpVal = Left$(tmpVal, InStr(tmpVal, Chr(0)) - 1)
-
Determina el tipo de conversión del valor de la palabra clave. ...
-
Seleccione Caso lKeyValType 'Tipo de datos de búsqueda. ...
Caso REG_SZ, REG_EXPAND_SZ 'Tipo de datos de clave de registro de cadena.
"SKeyVal = tmpVal" copia el valor de la cadena.
Tipo de datos de clave de registro de cuatro bytes "Case REG_DWORD"
Para I = len (tmpval) a 1 paso-1 'Convierta cada bit.
skeyval = skeyval hex(ASC(mid(tmp val, I, 1))' Genera valores carácter por carácter.
Luego
sKeyVal = Formato $( "&H" sKeyVal)'Convierte cuatro bytes en una cadena
Finalizar selección
GetKeyValue = sKeyVal 'Valor de retorno
Rc = RegCloseKey(hKey). )' Cerrar clave de registro.
Salida de "función de salida"
'Borrar después de que se produzca un error...
"GetKeyValue = vbNullString. "Establecer el retorno. valor a una cadena vacía.
Rc = RegCloseKey(hKey)' Cierra la clave de registro.
Finalizar función