Registro de Windows / Funciones para archivos Ini (Visual Basic)
Visual Basic 18 septiembre 2007
Aqui hay un conjunto de funciones que te permitirán leer y escribir al registro de windows o los archivos de inicialización. Estas funciones te ayudarán a realizar las mas comunes de las tareas asociadas con el almacenamiento de los settings y recuperación de los mismos. Hay muchas situaciones en las que debemos acceder al registro y las funciones del Visual Basic no te permite con un comando rápido y fácil.
Estas funciones vienen reflejadas en el modulo .bas que tu puedes incluir en tu proyecto. El módulo tiene todas las explicaciones para utilizarlo en perfecto idioma inglés. Todas las funciones vuelven un resultado diferente a cero cuando ocurre un error.
Aunque el uso del registro se recomienda, la necesidad de tener acceso a archivos ini todavía existe. Por esa razón, éstos funcionan y seguirán funcionando.
| Registro /Archivo Ini APIs Usadas |
Las APIs del registro provienen de Advapi32.dll mientras que las APIs del archivo Ini provienen del Kernel32.dll.
| RegCloseKey | RegOpenKeyEx | GetPrivateProfileInt |
| RegCreateKeyEx | RegQueryValueEx | GetPrivateProfileSection |
| RegDeleteKey | RegSetValueEx | GetPrivateProfileString |
| RegDeleteValue | WritePrivateProfileString | |
| RegEnumValue |
| Descripción del Módulo de Registro |
Este módulo estándar dota de funciones de almacenamiento y lectura tanto de valores del registro como de los archivos Ini.
| Nombre Funcion | Descricion |
| fReadValue | Lee una cadena o binario o integer desde el registro o una cadena o integer de un archivo ini. |
| fWriteValue | Escribe una cadena o binario o integer desde el registro o una cadena o integer de un archivo ini. Si la clave del registro o la clave del fichero Ini no existe se creará. |
| fEnumValue | Enumera toda la secuencia, dword y algunos valores binarios debajo de un subkey del registro o todos los valores en una sección particular de un archivo de .ini. La sección de .ini enumerada está limitada a 8K. |
| fEnumKey | Enumera todas las subkeys bajo la clave del registro. |
| fDeleteKey | Borra una subclave del registro. La clave no puede tener subclaves. |
| fDeleteValue | Borra un valor del registro o de un archivo Ini. |
| fReadIniFuzzy | Lee una cadena de un archivo Ini cuando solo es conocida una porcion de la sección. Si el cabecero de la sección contiene multiples palabras puedes especificar cualquier palabra completa. Te devolverá la sección completa. |
| Parámetros comunes |
sTopKeyOrIniFile – Puede tener los siguientes valores de cadena:
Abreviatura de la clave mas alta del registro desde esta lista:
Abreviación Significado HKCU HKey Current User HKLM HKey Local Machine HKU HKey User HKDD HKey Dynamic Data HKCC HKey Current Configuration HKCR HKey Classes Root O, el full path de un archivo .ini (ej. C:\Windows\MyArchivo.ini”) sSubKeyOrSection – Puede ser uno de los siguientes valores de cadena:
- Una subclave del registro o
- una seccion de un archivo .ini
sValueName – Puede ser uno de los siguientes valores:
- Una entrada de registro o
- una entrada de un archivo .ini
sValueType – Puede ser uno de los siguientes valores de cadena:
- “S” para un valor de cadena en el registro o operaciones en un archivo ini o
- “B” para un valor de 16-bit binario
- “D” para un valor de 32-bit integer (dword).
vDefault
El valor de la cadena, binario o integer por defecto que devolverá.
vValue
Un valor de la secuencia, binario o del número entero. Al leer valores, se fija al vDefault si es erroneo (0 al leer un número entero de un archivo de .ini)
Ejemplo de registro HKey_Current_User SoftwareCompanyNameProductNameAppName Setting1 = "String1" Setting2 = "String2" Setting3 = True Setting4 = 12345 AppVersion (default) = "String1" Company2Name Company3Name
Ejemplo de archivo Ini C:WindowsMyFile.Ini[Section1]Setting1=String1Setting2=String2Setting3=5[Section Name] Setting4=String4 Setting5=String5 Setting6=6
Ejemplos de lectura de un valor simple Sintaxis de la Función:
Function fReadValue (ByVal sTopKeyOrFile As String, _ByVal sSubKeyOrSection As String, ByVal sValueName As String, _ByVal sValueType As String, ByVal vDefault As Variant, _vValue As Variant) As LongEjemplo 1
Lee el valor de la cadena Setting1 del registro y lo almacena en la variable sSetting. Si el valor no existe usa “No Name” como por defecto.Call fReadValue("HKCU", "SoftwareCompanyNameProductNameAppName", _"Setting1", "S", "No Name", sSetting)Ejemplo 2
Lee una cadena similar de un archivo .ini.Call fReadValue("C:WindowsMyfile.ini", "Section1", "Setting1", _"S","No Name", sSetting)Ejemplo 3
Lee el valor binario (True | False) Setting3 del registro, por defecto es falso.Call fReadValue("HKCU", "SoftwareCompanyNameProductNameAppName", _"Setting3", "B", False, bSetting)Ejemplo 4
Lee un valor integer (dword) de Setting4 desde el registro. Por defecto es 100.Call fReadValue("HKCU", "SoftwareCompanyNameProductNameAppName", _"Setting4", "D", 100, lSetting)Ejemplo 5
Lee un valor integer de un archivo .ini y chequea el codigo de retorno.lResult = fReadValue("C:WindowsMyfile.ini", "Section1", "Setting3", "B", _"0", iSetting) if lResult <> 0 then . . . .Ejemplo 6
Lee el valor por defecto de la entrada …\AppVersion . La única diferencia con el ejemplo 1 es que el parametro sValueName está en blanco.Call fReadValue("HKCU", "SoftwareCompanyNameProductNameAppName", "", _"S", "", sSetting)
Ejemplos de escrtura de un valor simple Sintaxis de la Función:
Function fWriteValue(ByVal sTopKeyOrFile As String, ByVal sSubKeyOrSection As String, _ByVal sValueName As String, _ByVal sValueType As String, ByVal _vValue As Variant) As LongEjemplo 1
Escribe la cadena “String1″ a la entrada “Setting1″ del registro.Call fWriteValue("HKCU", "SoftwareCompanyNameProductNameAppName", _"Setting1", "S", "String1")Example 2
Escribe la cadena “String2″ a la entrada Setting2 en el archivo Ini.lResult = fWriteValue("C:WindowsMyfile.ini", "Section1", "Setting2","S", "String2")Ejemplo 3
Escribe un valor binario (True | False) a la entrada del registro “Setting3″.bValue = True Call fWriteValue("HKCU", "SoftwareCompanyNameProductNameAppName", _"Setting3", "B", bValue)Ejemplo 4
Escribe un valor entero (dword) a la entrada de registro “Setting4″.lValue = 1234 Call fWriteValue("HKCU", "SoftwareCompanyNameProductNameAppName", _"Setting4", "D", lValue)NOTA1: Esta función creará la clave del registro o la entrada en el fichero ini si no existe.
Examples of Enumerating Values Function Syntax:
Public Function fEnumValue(ByVal sTopKeyOrIniFile As String, _ByVal sSubKeyOrSection As String, sValues As String) As LongParameter:
sValues – A string of the form:
EntryName=Value|EntryName=Value|…. EntryName=Value||
Where – Value can be a string or binary value. and “|” equals vbNullChar (chr(0)).
Example 1
Retrieve all values under the “AppName” registry key.Call fEnumValue("HKCU","SoftwareCompanyNameProductNameAppName", sValues)sValues will contain:
“Setting1=String1|Setting2=String2|Setting3=True||”
Example 2
Retrieve all values under the [Section1] section of “C:\Windows\Myfile.ini”.Call fEnumValue("C:WindowsMyfile.ini", "Section1", sValues)sValues will contain the same string as in Example 1.
NOTE1: The .ini section enumerated is limited to 8K characters. The .ini section enumerated is limited to 8K characters.
Examples of Enumerating Keys Function Syntax:
Public Function fEnumKey(ByVal sTopKey As String, ByVal sSubKey As String, _ sValues As String) As LongParameter:
sValues – A string of the form:
SubKeyName|SubKeyName|…. SubKeyName||
Where – “|” equals vbNullChar (chr(0)).Example 1
Retrieve all key names under HKCU\Software.Call fEnumKey("HKLM", "Software", sValues)sValues will contain:
“CompanyName|Company2Name|Company3Name||”
Ejemplo de borrado de claves Sintaxis de la función:
Public Function fDeleteKey(ByVal sTopKey As String, _ByVal sSubKey As String, ByVal sKeyName As String) As LongParametros:
sSubKey – El path del registro a la sub-key para borrar.
sKeyName – El nombre de la sub-key del registro para borrar.
Ejemplo 1
Borrar el “AppName” sub-key.Call fDeleteKey("HKCU","SoftwareCompanyNameProductNameAppName", "AppName")NOTA: La clave que va a ser borrada no puede ser del nivel superior(HKCU, …) y no puede tener sub-keys
Ejemplo de borrado de valores Sintaxis de la Función:
Public Function fDeleteValue(ByVal sTopKeyOrFile As String, _ByVal sSubKeyOrSection As String, ByVal sValueName As String) As LongEjemplo 1
Borrar el valor “Setting3″ del registro.Call fDeleteValue("HKCU","SoftwareCompanyNameProductNameAppName", "Setting3")Ejemplo2
Borrar la entrada “Setting3″ del fichero Ini.Call fDeleteValue("C:WindowsMyfile.ini", "Section1", "Setting3")
Ejemplo de fReadIniFuzzy Sintaxis de la Función:
Public Function fReadIniFuzzyByVal sIniFile As String, sSection As String, _ByVal sIniEntry As String, ByVal sDefault As String, _sValue As String) As LongParametros:
sIniFile – El path hasta el archivo ini para leer.
sSection – Cualquier parte completa del nombre de sección del archivo de .ini.Ejemplo: [Section Name]
sSection puede ser “Section” o “Name” pero no un valor parcial como “Sect” o “ame”.
sIniEntry – La entrada a leer.
sDefault – La cadena por defecto a devolver.
sValue – La cadena de lectura en caso de error de sDefault.Ejemplo 1
Leer la entrada “Setting4″ del la [Section Name] de MyFile.ini.lResult = fReadIniFuzzy("C:WindowsMyfile.ini", "Name", Setting4, sValue)Produce:
lResult = 0
sSection = “Section Name”
sValue = “String4″Descargar el Modulo aquí.
Vota este artículo:
Posts anterior y posterior:
Posts Relacionados:
- Previo: « Mostrar nombre y tamaño de un archivo en un listview (Visual Basic)
- Siguiente: Cerrar una aplicación si no se usa durante un tiempo (Visual Basic) »


junio 21st, 2008 a las 6:12 am
excelente articulo!… muchas gracias.