Red de conocimiento informático - Problemas con los teléfonos móviles - Registro de operaciones de Vb API

Registro de operaciones de Vb API

Este módulo se utiliza para leer y escribir claves de registro.

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, _

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