Red de conocimientos turísticos - Información de alquiler - Acerca del problema de modificar el registro mediante programación VB

Acerca del problema de modificar el registro mediante programación VB

Reimprimir

Cuando hay un problema con Windows, será más fácil resolver el problema si puede comprender el registro del sistema Windows que está instalado. en su máquina Cuando instale el software por primera vez, reescribirá el registro para completar la instalación y operación correctas del software. Para convertirse en un maestro de la programación, por supuesto, debe dominar la tecnología de lectura y escritura del registro. Hacer un buen uso del registro agregará mucho color a su aplicación. A continuación, el autor presentará en detalle los métodos de programación relacionados con el registro en VB.

La estructura organizativa del registro

Antes de acceder al registro, primero debe comprender la estructura organizativa del registro. La forma más sencilla de comprender la estructura organizativa del registro es comenzar. Windows El "Editor del Registro" se puede iniciar haciendo clic en el comando "Ejecutar" en el menú "Inicio", ingresando a RegEdit y confirmando, y podrá ver la ventana "Editor del Registro" (como se muestra en la Figura 1).

● Clave y subclave

La estructura del Editor del Registro es muy similar a la del Administrador de recursos. Cada icono de carpeta en la ventana izquierda representa una clave. debajo de las carpetas, también hay subclaves debajo de las claves de registro. Para representar completamente una determinada subclave, se acostumbra utilizar la representación de la ruta de la carpeta. Por ejemplo, la subclave "Software" en HKEY_LOCAL_MACHINE se representa como HKEY_LOCAL_

MACHINE\Software, y la subclave "Microsoft" en "Software" se representa como HKEY_LOCAL_

MACHINE\Software\ Microsoft

● Valor de clave (), nombre de clave (Name), datos (Data) y valor de clave predeterminado (Default)

Cuando estamos en el lado izquierdo del editor de registro Después Al seleccionar una clave (o subclave) en la ventana, lo que aparece en la ventana derecha es el valor de la clave () de esta clave. El valor de la clave se puede dividir en dos partes: nombre de la clave (Nombre) y datos (Datos). Para cada clave, hay al menos un valor de clave predeterminado (Predeterminado). Tomando la subclave "HKEY_CLASSES_ROOT\

.bmp" como ejemplo, su valor de clave predeterminado es "ACDC_BMP". Además del valor de clave predeterminado, esta subclave también contiene el nombre (Nombre) "Tipo de contenido" y los datos (Datos) "image/bmp"

VB proporciona

Acerca del registro Funciones de la tabla

Después de comprender la estructura organizativa del registro, analicemos cómo acceder a él. Así como cuando accedemos a un archivo debemos especificar la carpeta (directorio) donde se encuentra el archivo, al acceder al registro primero debemos especificar la clave. Lo que ve como clave en el Editor del Registro es una larga cadena de caracteres, como "HKEY_LOCAL_MACHINE\SOFTWARE\

Microsoft\Windows\CurrentVersion". En Visual Basic 6.0, se ha proporcionado una ubicación de registro estándar para almacenar información de programas para aplicaciones creadas en VB: HKEY_CURRENT_USER\Software\VB y VBA Program settings\ (Para simplificar, esta ubicación se denominará "Ubicación estándar" ). VB proporciona dos declaraciones y dos funciones para procesar los valores de configuración del programa almacenados en la ubicación de registro de la aplicación:

Función GetSetting (nombre de la aplicación, sección, clave [, predeterminado]): recupera el valor de configuración del registro.

Declaración SaveSetting nombre de aplicación, sección, clave: guarda o crea valores de configuración del registro.

Función GetAllSettings(nombre de aplicación, sección): Devuelve una matriz que contiene múltiples valores de configuración del registro.

Declaración DeleteSetting appname, sección[, clave]: elimina el valor de configuración del registro.

Explicación de los parámetros anteriores:

[ ]: Indica opciones opcionales.

appname: una expresión de cadena que contiene el nombre de la aplicación o proyecto y es una subclave en la ubicación estándar.

sección: expresión de cadena que contiene el nombre del área, que es una subclave debajo de appname.

clave: expresión de cadena, ubicación estándar \appname\

El nombre de la clave (Nombre) de la subclave de la sección.

: Expresión de cadena, ubicación estándar \appname\

La subclave de sección corresponde al valor clave () del nombre de la clave (Nombre).

predeterminado: expresión, si no hay ningún valor establecido en la configuración de la clave de registro, se devuelve el valor predeterminado. Si se omite, el valor predeterminado se evalúa como una cadena de longitud cero ("").

GetAllSettings devuelve Variant, que es una matriz bidimensional cuyo contenido es una cadena. Esta matriz bidimensional contiene todos los valores de configuración de claves de registro y sus valores correspondientes en el área especificada. Si el nombre de la aplicación o la sección no existe, GetAllSettings devuelve una variante no inicializada.

Uno de los ejemplos

Cree un nuevo proyecto en VB6.0 y asígnele el nombre vbreg.vbp, elimine todos los formularios que contiene, haga clic derecho en el explorador de proyectos y seleccione Agregar módulo y asígnele el nombre vbreg.bas. Haga doble clic en reg.bas e ingrese el siguiente código:

Dim avntSettings As Variant

Dim intX As Integer

avntSettings = GetAllSettings("Declaración API de VB 6 Loader" , "File List")

For intX = 0 To UBound(avntSettings, 1)

Debug.Print avntSettings(intX, 0), avntSettings(intX, 1)

Siguiente intX

El programa anterior primero usa la función GetAllSettings para recuperar los valores de las dos claves de registro en la parte Lista de archivos de la subclave "VB 6 API Statement Loader". y muestra los resultados en la ventana inmediata. Antes de iniciar la ejecución, presione para asegurarse de que se muestre la ventana Inmediato en la pantalla. Al mismo tiempo, abra el registro para comparar el valor clave de la ubicación estándar\cargador de declaración API VB 6\Lista de archivos con el resultado.

El siguiente programa usa la instrucción SaveSetting para crear una subclave llamada "Mi proyecto\Mi subclave" en la ubicación estándar y luego usa la función GetSetting para obtener uno de los valores de configuración y mostrarlo. Debido a que se pasa el parámetro predeterminado, la función GetSetting debe tener un valor de retorno.

Tenga en cuenta que el nombre del área no se puede obtener utilizando la función GetSetting. Finalmente, use la instrucción DeleteSetting para eliminar la subclave.

Guardar configuración "Mi proyecto", "Mi subclave", "Arriba", 75

Guardar configuración "Mi proyecto", "Mi subclave", "Izquierda", 50

Debug.Print "Top", GetSetting("Mi proyecto", "Mi subclave", "Top", "25")

Debug.Print "Left", GetSetting("Mi proyecto" , "Mi subclave", "Izquierda", "0")

'Para facilitar la observación, la depuración puede establecer un punto de interrupción aquí y cambiar al Registro, presione la tecla para actualizar, puede ver las subclaves que creó y sus valores clave

EliminarConfiguración "Mi proyecto", "Mis subclaves"

'Ejecutar Después de completar, cambie al registro nuevamente y presione la tecla para actualizar, y observe si las subclaves creadas y sus valores clave se eliminan

Nota: antes de ejecutar este programa, debe asegurarse de que se haya cargado automáticamente al iniciar VB Text Browser", y que haya un. lista de "Archivos de texto" abiertos en el menú "Archivo" del navegador de texto API. De lo contrario, abra primero el "Explorador de texto API" y seleccione "Abrir archivo de texto" en el menú "Archivo" para abrir al menos un archivo de texto o base de datos.

Programación del registro de la API de Windows

Aunque VB en sí proporciona cuatro funciones relacionadas con el registro, estas funciones solo se pueden usar en "HKEY_CURRENT_USER\

Software \VB y VBA ProgramSettings" para leer, eliminar y modificar valores clave. Esto se puede lograr usándolas para aplicaciones generales. ¿Qué debe hacer si desea acceder a otras claves o subclaves primarias que no son "ubicaciones estándar"? En este punto, debe recibir ayuda de la API de Windows.

En Windows, cada clave corresponderá a un identificador de clave (igual a un valor entero largo, generalmente representado por hKey en el programa. La razón por la que Windows usa hKey para representar la clave es para permitir el registro). Access es más eficiente porque el rendimiento operativo de los números enteros es mejor que el de las cadenas, por lo que primero entendemos cómo obtener el identificador de clave de la clave (es decir, hKey).

Las claves en la parte superior incluyen HKEY_CLASSES_ROOT, HKEY_CURRENT

_USER, HKEY_LOCAL_MACHINE, etc. Los valores hKey de estas claves son fijos y sus valores se muestran en la siguiente tabla:

---- ------------------

Llave Mango de llave

--------- ----- ---------

HKEY_CLASSES_ROOT y H80000000

HKEY_CURRENT_CONFIG y H80000005 HKEY_CURRENT_USER y H80000001

H KEY_DYN_DATA amplificador; H80000006

HKEY_LOCAL_MACHINE & H80000002

HKEY_USERS & H80000003

-------------------

Pero si desea obtener el identificador de subclave de estas claves, debe llamar a la función API RegOpenKey. RegOpenKey contiene tres parámetros. El uso es el siguiente:

Private Declare RegOpenKey Lib "advapi32. .dll" Alias ​​​​"RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Aquí hKey es el identificador de clave, lpSubkey es la cadena de la subclave, PhkResult es el valor de retorno de la función, si la llamada RegOpenKey es exitosa, entonces este parámetro Se devolverá la hKey de la subclave.

Por ejemplo, si queremos obtener la subclave "SOFTWARE\Microsoft" en HKEY_LOCAL_MA

CHINE, la declaración utilizada es:

Dim ret As Long, hKey Siempre

ret=RegOpenKey(HKEY_LOCAL_

MACHINE, "SOFTWARE\Microsoft", hKey)

Si ret = 0 Entonces

'ret=0 indica éxito, el valor de hKey es igual al identificador de clave de la subclave "SOFTWARE

\Microsoft"

End If

Pague atención al registro de llamadas Después de la función API de la tabla (como la RegOpenKey anterior), se devolverá 0 si tiene éxito; de lo contrario, se devolverá un valor distinto de 0. Esto es diferente de la convención de las funciones de VB, así que preste especial atención.

Además de especificar el valor del identificador de clave de nivel superior (como HKEY_CLASSES

_ROOT, HKEY_LOCAL_MACHINE, etc.), el primer parámetro hKey de RegOpenKey también puede ser un identificador de subclave.

Como en el ejemplo anterior, hKey es igual al identificador de subclave de "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft". Entonces, si queremos obtener el identificador de subclave de "HKEY_

LOCAL_MACHINE\SOFTWARE\Microsoft\

Windows\CurrentVersion", el programa es el siguiente:

Dim ret As Long, hKey As Long, hKey2 As Long

ret=RegOpenKey(hKey, "Windows\ Current

Version", hKey2)

'hKey2 será igual al identificador de subclave de "Windows\

CurrentVersion" de "HKEY_LOCAL_MAC

HINE\SOFTWARE\Microsoft"

En el programa anterior, tenga cuidado de no agregar "\" antes de "Windows\

CurrentVersion" para convertirlo en "\Windows

\CurrentVersion". Este es un método de representación de error.

La siguiente es una breve introducción a varias otras API (API de 32 bits):

● RegSetEx(): almacena datos en el campo de valor de la clave de registro abierta

; p>

p>

● RegCloseKey(): Libera el identificador de la palabra clave especificada

● RegQueryEx(): Encuentra el valor relacionado con el valor clave que especificaste en el registro; /p>

● RegCreateKeyEx(): crea y abre la palabra clave especificada, o ábrela si ya existe.

● RegEnumKeyEx(): enumera las subpalabras clave de la clave de registro especificada (32); bits)

● RegEnum(): Cada llamada enumera el valor de la clave de registro especificada y copia el nombre y el bloque de datos de un valor indexado

● RegDeletekey(): Eliminar; una palabra clave y sus subpalabras clave;

● RegDelete(): elimina un valor con nombre en la palabra clave de registro especificada.

Conclusión