Red de conocimiento informático - Problemas con los teléfonos móviles - Código fuente subyacente volátil

Código fuente subyacente volátil

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

Función de declaración privada RegDeleteKey Lib alias "advapi32.dll" " RegDeleteKeyA" (ByVal hKey es Long, ByVal lpSubKey es String) es Long

Función de declaración privada RegDeleteValue Lib "advapi32.dll "Alias" RegDeleteValueA" (ByVal hKey es Long, ByVal lpValueName es String) es Long

-

-Constantes de API de registro...

-

Tipo de datos de registro...

Const REG_SZ = 1' Cadena terminada en nulo Unicode.

"const REG_EXPAND_SZ=2" Cadena Unicode terminada en nulo.

Const REG_DWORD = 4' Número de 32 bits

Público Const REG_BINARY = 3' Binario de formato libre

Valor del tipo de creación del registro...

Const REG_OPTION_NON_VOLATILE = 0 'Esta palabra clave se conserva cuando se reinicia el sistema.

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 pública HKEY_class_ROOT = & H80000000

Const pública HKEY_Current _user = ampH80000001

Constante pública HKEY_LOCAL_MACHINE = ampH80000002

Construcción pública HKEY _user = ampH80000003

Construcción pública HKEY _PERFORMANCE_DATA = ampH80000004

Valor de retorno...

Constante pública ERROR_NONE = 0

Constante pública ERROR_BADKEY = 2

Constante pública ERROR_ACCESS_DENIED = 8

p>

Constante pública ERROR_SUCCESS = 0

-

-Tipo de atributo de seguridad del registro...

-

Atributos de seguridad de tipo privado

n tiene la misma longitud

lpSecurityDescriptor es largo

bInheritHandle es booleano

Tipo de finalización

-

Ejemplo de uso: depuración.

Imprimir UpdateKey(HKEY_Class_Root, "Nombre de clave", "Nuevo valor")

-

Modificar valor de clave

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 'palabra clave de registro de procesamiento.

' 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 a 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. PrintGetKeyValue (raíz de clase HKEY.

ListviewCtrl.1\CLSID ","")

-

Recuperar datos

Función pública GetKeyValue(KeyRoot es Long, KeyName es String, SubKeyRef es String) Para 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 /p>.

' Dim hDepth As Long '

Atenuar sKeyVal como cadena

El tipo de valor Dimlkey es largo 'Tipo de datos de clave de registro

Atenuar tmpVal como registro de cadena clave almacenada temporalmente

Tamaño de variable de clave de registro "Dim KeyValSize As Long"

Abra KeyRoot {HKEY _ LOCAL _ MACHINE bajo la clave de registro...}

-

RC = regopenkeyex(keyroot,keyname,0,key_all_access,HKEY)'Abrir clave de registro.

if(RC lt; gtError _ Success) then gotogetkeyerror 'Manejar el error ...

TmpVal = String$(1024, 0)'Asignar 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) 'Obtiene/crea el valor de la clave.

if (RC lt; gtError_success) then gotogetkeyerror 'Manejo de errores

p>

tmpVal = Left$(tmpVal,InStr( tmpVal,Chr(0)) - 1)

-

Determina el tipo de conversión del valor de la palabra clave...

-

<. p>Seleccione Case lKeyValType 'Tipo de datos de búsqueda...

Case REG_SZ, REG_EXPAND_SZ 'Tipo de datos de clave de registro de cadena.

"SKeyVal = tmpVal" copia el valor de una 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" establece el valor de retorno en la cadena vacía.

Rc = RegCloseKey(hKey)' Cerrar clave de registro.

Función final

Eliminar valor clave

La función pública DeleteValues ​​​​(KeyRoot es Long, KeyName es String, SubKeyName es String) es booleana

Dim rc es tan largo

Dim hKey es tan largo

Dim hDepth As Long

Dim lpAttr como atributo de seguridad

lpAttr.nLength = 50

lpAttr.lpSecurityDescriptor = 0

lpAttr.bInheritHandle = True

rc = RegCreateKeyEx(KeyRoot, KeyName,_

0, REG_SZ, _

REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, lpAttr, _

hKey, hDepth)

Si rc lt gtERROR_SUCCESS entonces vaya a ErrorTary

rc = RegDeleteValue(hKey,SubKeyName)

Si rc lt gtERROR_SUCCESS entonces vaya a ErrorTary

DeleteValues ​​​​= True

rc = RegCloseKey (hKey)

Salir de la función

Lista de errores:

DeleteValues ​​​​= False

rc = RegCloseKey(hKey)

Función final

Esta es una API de llamada de registro completa que se puede modificar a voluntad. Se ha comentado el significado y uso de la función, y otras funciones son como gatos y tigres. En cuanto a los datos binarios, simplemente cambie REG_SZ a REG_BINARY en la función que abre el elemento.