Conozca los Apis o manejar responsable del Registro de Windows.
|
| | Detrás de las API de Registro | | |
Al Gore Nilesh: - ng411002@rediffmail.com
Aquí estoy describiendo la manera de editar el Registro de Windows mediante el uso de las API, esto será a través de todo el proceso de manipulación tan eso tú poder crear sus propias bibliotecas o componentes de ActiveX para poder manejar cómodamente del Registro de Windows.
El API cuál voluntad ser explicó son solamente seleccionados API que puede editar registro Tan permite empezar para comprender la API responsable de la tramitación de Registro de Windows
1] Para abrir la clave del Registro
R
Esto API funciónes utilizado para abrir el llave y la función es el siguiente
Declare Function RegOpenKeyEx Lib "Advapi32.dll" Alias "RegOpenKeyExA" (ByVal HKEY Como Long, ByVal lpSubKey As String, ByVal ulOptions Como Long, Como samDesired ByVal Long, phkResult Como largo) As Long
Ahora vamos a entender los parámetros de la función
HKEY: -- Se trata de manejarpara abrir una llave o clave de la apertura de la actualidad que pueden
ser cualquier de los siguientes.
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
HKEY_CURRENT_CONFIG
HKEY_DYN_DATA
HKEY_PERFORMANCE_DATA
LpSubKey: -- Este es el puntero a una cadena de terminación nula la celebración de el nombre de la sub clave para abrir. Si este parámetro es NULL o un puntero a una cadena vacía, la función se abrirá una nueva asa a la clave identificados por el parámetro HKEY. En este caso, la función no se ocupa de cerrar el abierto anteriormente.
Uloption: -- Esto es siempre reservado y Debe ser cero.
SamDesired: -- Esto es utilizado para seguridad acceso, Especifica un máscara de acceso eso describe el deseado seguridad acceso para el nuevo llave. Este parámetro puede ser una combinación de los siguientes valores:
KEY_ALL_ACCESS: -- Este contiene la combinación de siguientes teclas KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS
KEY_NOTIFY, KEY_CREATE_SUB_KEY, KEY_CREATE_LINK
KEY_SET_VALUE acceso.
KEY_CREATE_LINK: -- Se utiliza para el permiso para crear vínculo.
KEY_CREATE_SUBKEY: -- Nombre lo indica, su permiso para crear sub clave.
KEY_ENUMERATE_SUB_KEYS: -- permiso enumerar Sub llaves.
KEY_EXECUTE: -- La autorización para el acceso de lectura.
KEY_NOTIFY: -- permiso para cambiar la notificación.
KEY_QUERY_VALUE: -- La autorización para la consulta de datos sub clave.
KEY_READ: - utiliza la combinación de KEY_QUERY_VALUE
KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY acceso.
KEY_SET_VALUE: -- Se utiliza para establecer la Subcomisión de datos clave.
KEY_WRITE: -- Como el nombre sugiere, que utilizar la combinación de KEY_CREATE_SUB_KEY, KEY_SET_VALUE acceso. Estos son los valores de SamDesired.
PhkResult: -- En realidad PHKEY es puntero para HKEY y PhkResult Puntero a una variable que recibe un identificador abierto a la clave. Cuando ya no necesitan manejar la devolución, llamar a la RegCloseKey (Esta clave se explica en el siguiente tema.) Para cerrarla. Nota: - Este función poder no crear el especificada clave si la clave no existe en el Registro.
2 - Para el cierre clave
R
Esta función se utiliza para cerrar la clave, la función es el siguiente.
Declare Function RegCloseKey Lib "Advapi32.dll" (ByVal Como HKEY largo) As Long
Sólo hay un parámetro utilizado en esta función que es
HKEY: - que es manejar a la abrió clave para cerrar. Nota: -- El tirador para un especificada clave no debe utilizarse después de que se ha cerrado, porque ya no será válida. Clave maneja no se puede dejar abierta más tiempo que necesario. El RegCloseKey función hace no necesariamente escribir información para el Registro antes de regresar; ello puede tomar tanto como varios segundos de la memoria caché que se escriben en el disco duro.
3] Para Crear clave
R
3] Para Crear clave
R
Esta función se utiliza para crear claves. La función es el siguiente.
Declare Function RegCreateKey Lib "Advapi32.dll" Alias "RegCreateKeyA" (ByVal HKEY Como Long, ByVal lpSubKey As String, phkResult Como largo) As Long
Ahora permite ir para parámetros, estos son muy similares a los RegOpenKey
Pero voy a explicar como se indica a continuación.
HKEY: - Este es manejar para abrir una llave o clave de la apertura de la actualidad que pueden
ser cualquier de los siguientes.
HKEY_CLASSES_ROOT, HKEY_CURRENT_USER HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_CONFIG, HKEY_DYN_DATA
HKEY_PERFORMANCE_DATA
La clave abierto o creado por esta función es un subconjunto clave de la clave identificados por HKEY.
LpSubKey: -- Ello es un Puntero para un de terminación nula cadenaespecificando el nombre de una clave que esta función se abre o crea. Esta clave debe ser un subconjunto clave de el clave identificados por el parámetro HKEY. Supongamos HKEY es uno de los predefinidos llaves, lpSubKey puede ser NULL. En ese caso, el manejador devuelto por utilizando P hkResult (se explica más adelante) es el mismo HKEY manejar en el pasado a la función.
PhkResult: - No Es un Puntero para un variable que recibe un identificador para el abierto o creado clave.
Nota: - Cuando la LpSubKey parámetro es la dirección de una cadena vacía, el función abre y entonces pasa espalda la clave identificados por el parámetro HKEY.
4] Para borrar clave
R
Esto función se usa para eliminar la Subcomisión clave y todos sus dependientes o de otros sub claves. En caso de ventanas NT esto función no implica la supresión de sub clave si tieneotro sub claves en esta situación usted tiene que quitar la Z a la A para formulario de medios más bajos sub clave a la cima. La función es el siguiente.
Declare Function RegDeleteKey Lib "Advapi32.dll" Alias "RegDeleteKeyA" (ByVal HKEY Como Long, ByVal lpSubKey As String) As Long
Por lo tanto, el parámetros son
HKEY: - Este es manejar para abrir una llave o clave de la apertura de la actualidad que pueden
ser cualquier de los siguientes.
HKEY_CLASSES_ROOT, HKEY_CURRENT_USER HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_CONFIG, HKEY_DYN_DATA
HKEY_PERFORMANCE_DATA
LpSubKey: -- Ello es Puntero para un de terminación nula cadena especificando el nombre de la clave eliminar. Esto parámetro no puede ser NULL y en el caso de Windows NT no debe tener Sub clave.
5] de obtener valor
R
Esto funciónrecupera el tipo y datos de específicas valor. La función es
Declare Function RegQueryValueEx Lib "Advapi32.dll" Alias "RegQueryValueExA" (ByVal HKEY Como Long, ByVal lpValueName As String, ByVal lpReserved Como Long, lpType Como Long, ByVal lpData As String, lpcbData Como largo) As Long
Así que aquí los parámetros obtener cambiado, permite buscar ellos
HKEY: - Es igual al anterior función, por favor, consulte ellos.
LpValueName: - No es un Puntero a una cadena de terminación nula la celebración de el nombre de el valor para consulta. En caso este parámetro es NULL o una cadena vacía, "", el función recupera el tipo y datos para la clave o sin nombre del valor por defecto.
LpReserved: -- Ya que nombre sugiere, Ello es reservado es siempre Nulo.
LpType: - No es un Puntero para el variable que recibe el tipo de datos asociadoscon el valor especificado. La descripción de los valores devueltos con este parámetro son los siguientes.
1] RegBinary: --Se trata de un binario de datos
2] Reg_Dword: - Doword tipo de datos que tengan número de 32 bits.
3] Reg_Dowrd_Little_Endian: - No es un número en formato little endian, Este es De 32 bits número que es equvalent Reg_Doword.In a este formato, un multi - byte valor es almacenada en memoria desde el byte más bajo (la "pequeña final") para el más alto byte. Para ejemplo, el valor 0x123456 se almacena como (0x56 0x34 0x12) en el little-endian formato.
Consulte los datos del Registro tipo para obtener más detalles.
4] Reg_Dowrd_Big_Endian: -- El número es en el formato que Big_Endian es un De 32 bits número. En esto formato un multi-byte valor se almacena en la memoria desde el más alto byte (La "gran final") a la más baja byte. Por ejemplo, el valor 0x123456 se almacena como (0x12 0x34 0x56), en big-endian formato.
5] REG_EXPAND_SZ: - Es cadena terminada en nulo que posee inesperada referencia a los entornos variables (por ejemplo, "% system%"). Esto puede ser ANSI o Unicode cadena sobre la base de si usamos o Unicode ANSI función.
6] REG_LINK: - Es un enlace simbólico Unicode.
7] REG_MULTI_SZ: - Una serie de cadena terminada en nulo, denunciado por dos caracteres nulos.
8] Reg_None: - Definición de tipo de valor no es nada.
9] Reg_resource_List: -- Lista de los controladores de dispositivos recursos.
10] REG_SZ: -- Ello es un de terminación nula cadena. Se ANSI o Unicode cadena según encendido si tú usar elUnicode o ANSI permite ver functions.So el siguiente parámetro, es decir, LpData.
LpData: -- Ello es un Puntero para un buffer cuál tener el datos de valor. Este parámetro puede ser NULL si los datos no es necesario. Ahora vamos a pasar al último parámetro, es decir, LpcbData.
LpcbData: -- Ello es un Puntero para una variable que especifica el tamaño del búfer señaló para por LpData el parámetro. Cuando la función retorna, esta variable contiene el tamaño de el datos copiar para LpData. El tamaño de la misma está en bytes.
Supongamos que el buffer especificada por lpData parámetro no es lo suficientemente grande como para contener los datos, la función devuelve el valor ERROR_MORE_DATA, y tiendas el requerido buffer tamaño dentro de el variable señalado por lpcbData.
Y en caso lpData es NULL, y lpcbData no es NULL entonces la función devuelve ERROR_SUCCESS, y almacena el tamaño de los datos, en bytes, en la variable apuntado por lpcbData.
Recordar eso supongo datos de valor tiene la REG_SZ, REG_MULTI_SZ o REG_EXPAND_SZ tipo, y el ANSI versión de esto función se utiliza tanto por explícitamente llamando RegQueryValueExA o por no la definición de UNICODE, este función convierte el Unicode almacenados cadena a una cadena ANSI antes de copiar al buffer apuntado por lpData.
Ahorapermite tomar un vistazo a Windows NT, en el caso de NT (NT o basado en System)
Cuándo HKEY especifica HKEY _ PERFORMANCE_DATA y la amortiguación lpData es pequeño, RegQueryValueEx regresaERROR_MORE_DATA pero lpcbData no devolver el tamaño de búfer de requeridas. Esto se debe a que el tamaño de la rendimiento datos poder cambiar desde una llamada a la siguiente. En tal caso, usted debe aumentar el tamaño del búfer y llamar de nuevo RegQueryValueEx pasar la actualizado buffer tamaño en el lpcbData parámetro. Repita esto hasta que la función tiene éxito. Tú necesidad de mantener una variable para realizar un seguimiento de la tamaño de búfer, porque el valor regresó por lpcbData es imprevisibles.
Es sorprendente pero completamente normal que cuando nos llama la función RegQueryValueEx con HKEY ajustado a la HKEY_PERFORMANCE_DATA tirador y un cadena de valor de un determinado objeto, el regresó datos estructura algunas vecestiene no solicitadas objetos.
Nota: -- El LpType parámetro poder serNULL si el tipo no es necesario.
El LpcbData parámetro puede ser NULL sólo si LpData es NULL.
6] Para establecer el valor
R
Ello es utilizado para establecer datos y tipo de un especificada valor en una clave del Registro.
La función es el siguiente.
Declare Function RegSetValueEx Lib "Advapi32.dll" Alias "RegSetValueExA" (ByVal HKEY Como Long, ByVal lpValueName As String, ByVal Como Reservados Long, ByVal dwType Como Long, ByVal lpData As String, ByVal Como cbData largo) As Long
Por lo tanto, permite acercarse a los parámetros
HKEY: - Es igual al anterior función, por favor, diríjase a
LpValueName: -- Ello es un Puntero a una cadena de explotación nombre del valor para establecer. cuándo un valor con esto nombre no está ya presente en la clave, la función añade ello para el llave. Supongamos que lpValueName es NULL o una cadena vacía, "", el función establece el tipo y datos para el la clave sin nombre o valor por defecto. El siguiente parámetro está reservado no tiene nada que explicar, como sugiere su nombre todos.
DwType: - Este parámetro Especifica el tipo de material que se almacena como el valor de los datos. Este parámetro tiene la misma valores que hemos debatido en la función RegQueryValueEx, Por lo tanto, se refieren a todos los valores.
LpData: - No es una Puntero a un buffer que contiene los datos que se almacenan con el valor especificado nombre.
CbData: -- Esto parámetro especifica el tamaño de los datos apuntado por el lpData parámetro. Si el datos es de tipo REG_SZ, REG_EXPAND_SZ, o REG_MULTI_SZ, cbData deber incluir el tamaño de la terminación de carácter nulo. El tamaño de los datos en bytes.
7] para enumerar los valores
R
Esto función enumera el valorespara el especificada clave de registro abierto. La función de copias un valor indexado nombre y el bloque de datos de la clave cada vez que se llama. Algunos parámetros de la función son similares a las RegQueryValueEx, aún vamos a ver eso. La función es el siguiente.
Declaran Función RegEnumValue Lib "Advapi32.dll" Alias "RegEnumValueA" (ByVal HKEY Como Long, ByVal dwIndex Como Long, ByVal lpValueName As String, lpcbValueName Como Long, ByVal lpReserved Como Long, lpType Como Long, ByVal lpData As String, lpcbData Como a largo ) As Long
Ahora vamos a entender parámetros que intervienen en esta función
HKEY: - Este es manejar para abrir una llave o clave de la apertura de la actualidad que pueden
ser cualquier de los siguientes.
HKEY_CLASSES_ROOT, HKEY_CURRENT_USER HKEY_LOCAL_MACHINE, HKEY_USERS,HKEY_CURRENT_CONFIG, HKEY_DYN_DATA
HKEY_PERFORMANCE_DATA
Los valores enumerados se asocian con la clave identificados por HKEY.
DwIndex: - Este parámetro Especifica el Índice de el valor paraser recuperar. Esto parámetro debería ser cero para el primero llamar para RegEnumValue la función y luego se incrementa de las próximas convocatorias. En el caso de valores no se ordenó, alguno nuevo valor voluntad tener un arbitraria índice. Esto significa que la función puede devolver los valores en cualquier orden.
LpValueName: - Este parámetro es un puntero a un buffer que recibe el nombre del valor, incluida la terminación de carácter nulo.
LpcbValueName: -- Este parámetro es un puntero a una variable que especifica el tamaño, en caracteres, de señaló el buffer para por el LpValueName parámetro. Este tamaño debe incluir el terminación null carácter. Cuándo el función los retornos, señaló la variable para porLpcbValueName contiene el número de caracteres almacenados en el buffer. El contar regresó no incluye la terminación de carácter nulo.
LpReserved: - Reservados; debe ser NULL
LpType: - No es un Puntero para el variable que recibe el tipo de datos asociados con el valor especificado. La descripción de los valores devueltos con este parámetro son los siguientes.
1] RegBinary: - Se trata de un binario de datos
2] Reg_Dword: - Doword tipo de datos que tengan número de 32 bits.
3] Reg_Dowrd_Little_Endian: - No es un número en formato little endian, Este es De 32 bits número cuál es equvalent Reg_Doword.In a este formato, una multi-byte valor se almacena en la memoria de los más bajos byte (el "poco efecto") a la más alta byte. Por ejemplo, el valor 0x123456 se almacena como (0x56 0x34 0x12) en el little-endian formato.
Consulte los datos del Registro tipo para obtener más detalles.
4] Reg_Dowrd_Big_Endian: - La número es en Big_Endian formato cuál es uno de 32 bits número.En esto formato un multi-byte valor es almacenados en la memoria desde el más alto byte (El "big final ") para la más baja byte. Para ejemplo, el valor 0x123456 es almacenadacomo (0x12 0x34 0x56) en
big-endian formato.
5] REG_EXPAND_SZ: - Es terminada en nulo cadena que posee inesperada referencia a los entornos variables (por ejemplo, "% system%").
Esto puede ser ANSI o Unicode cadena sobre la base de si usamos o Unicode ANSI función.
6] REG_LINK: - Es un enlace simbólico Unicode.
7] REG_MULTI_SZ: - Una serie de cadena terminada en nulo, denunciado por dos caracteres nulos.
8] Reg_None: - Definición de tipo de valor no es nada.
9] Reg_resource_List: - Lista de los controladores de dispositivos recursos.
10] REG_SZ: -- Ello es una cadena de terminación nula. Se ANSI o Unicode cadena dependiendo de si se utiliza el Unicode o ANSI funciones.
Tan eso era el descripción de valores, ahora, permite ver el siguiente parámetro, es decir, LpData.
LpData: - No es un Puntero para un buffer cuál tener el datos devalor. Este parámetro puede ser NULL si los datos no es necesario. Ahora vamos a pasar al último parámetro, es decir, LpcbData.
LpcbData: -- Ello es un Puntero para una variable que especifica el tamaño del búfer señaló para por el LpData parámetro. Cuándo el función de los retornos, este variable contiene el tamaño de los datos copiados a LpData. El tamaño de la misma se encuentra enbytes. Supongamos que el buffer especificada por lpData parámetro no es lo suficientemente grande como para contener los datos, la función devuelve el valor ERROR_MORE_DATA, y las tiendas de tamaño de búfer en la variable apuntado por lpcbData. Y en caso lpData es NULL, y lpcbData no es NULL entonces la función devuelve ERROR_SUCCESS, y tiendas el tamaño de los datos, en bytes, en la variable apuntado por lpcbData.
Nota: -- Cuándo tú enumerar valores, un solicitud inicialmente llamar la RegEnumValue función con el DwIndex parámetro establecer para cero. El solicitud entonces incremento DwIndex y llamar a la Función RegEnumValue hasta que no hay más valores hasta que la función devuelve ERROR_NO_MORE_ITEMS. La aplicación poder también DwIndex al índice de el último valor encendido el primero llamada a la función y disminuir el índice hasta el valor con el índice de 0 (cero) se enumeran.
Cuándo tú utilizando RegEnumValue, un solicitud deber no llamar cualquier registro funciones que podría cambiar la clave se preguntó. El llave identificado por el HKEY parámetro deber tener se abrió con KEY_QUERY_VALUE acceso. Para abrir la clave, utilizar el RegCreateKeyEx o RegOpenKeyEx función.8] Para borrar los valores
R
Para borrar Registro valor de específicas llave hemos de recurrir a las mismas anterior API para la apertura y el cierre de los principales junto con las nuevas API que se RegDeleteValueEx. Esto función Es utilizado deletimg Registro de Valores, que tiene dos prameters sólo tiene un mango y otros tiene valor de nombre que habrá de eliminar. Por lo tanto, la función es el siguiente
Declaran Función Pública RegDeleteValue Lib "Advapi32.dll" Alias "RegDeleteValueA" (ByVal HKEY Como Long, ByVal lpValueName As String) As Long
Y los parámetros son "HKEY y LpValueName
HKEY: Este es manejar para abrir una llave o clave de la apertura de la actualidad que pueden
ser cualquier de los siguientes.
HKEY_CLASSES_ROOT, HKEY_CURRENT_USER HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_CONFIG, HKEY_DYN_DATA
LpValueName: Es es un puntero a una cadena de terminación nula la celebración de el nombre de el valor para consulta. En caso esto parámetro es NULL o una cadena vacía, "", el función recupera el tipo y los datos de la clave o sin nombre del valor por defecto.
Tenga en cuenta que clave identificados por el parámetro debe HKEY se han abierto con el acceso KEY_SET_VALUE (KEY_WRITE acceso incluye el acceso KEY_SET_VALUE
Resumen
Hasta ahora, en este capítulo hemos aprendido la forma de registro que puede ser editado con
Programación. Las funciones de la API que se utilizan en el proceso de edición.
Las funciones utilizadas son las siguientes
1] Apertura de la clave : -- RegOpenKeyEx
2] Clausura la clave : -- RegCloseKey
3] Creación de la clave : - RegCreateKey
4] Borrado de la clave : - RegDeleteKey
5] La lectura de los valores : - RegQueryValueEx
6] Escritura de los valores : -- RegSetValueEx
7] Enumerando valor : - RegEnumValue
8] Borrado de Valores : - RegDeleteValue
Hemos estudiado los parámetros de estas funciones y su valor tipos
así como, la poca referencia a esos parámetros son los siguientes.
*] HKEY : - Manejar a la clave.
*] LpSubKey : - Puntero a cadena terminada en nulo.
*] Uloption : - Nulo valor reservados.
*] SamDesired: - Especifica el acceso a la máscara de acceso de seguridad deseado.
*] PhkResult : - Puntero a la variable que recibe manejar.
*] LpValueName : - Puntero a una cadena de terminación nula nombre de la celebración de la consulta
*] LpcbValueName: - Especifica el tamaño del buffer apuntado por LpValueName
*] LpReserved: - Reservados nulo valor.
*] LpType : - Puntero a la variable que recibe los datos.
*] LpData : - Puntero a buffer de datos que tienen valor
*] LpcbData : - Especifica el tamaño del buffer apuntado por el LpData
*] DwType : - Los datos que se almacenarán con un valor específico nombre
*] CbData : - Especifica el tamaño de los datos apuntado por el lpData
*] DwIndex : - Especifica el índice del valor a recuperar
Nilesh Gore.

Delicious
Digg
Google
Yahoo