El acceso al registro de windows
Este artículo presenta un par de funciones útiles, que facilitan la lectura y escritura de valores en el Registro de Windows.
¿QUÉ ES EL REGISTRO?
es donde Windows almacena muchas de sus opciones de configuración, y también permite a las aplicaciones acceder a estos datos, así como guardar sus propios datos.
Si quieres echar un vistazo en el registro, solo tiene que ejecutar el REGEDIT.EXE solicitud que se encuentra en el directorio de Windows. Tenga cuidado de no cambiar nada o podría terminar arruinando su instalación!
Ahora, los datos en el registro se almacena en una estructura de árbol. Hay muchas raíces (muchos de los árboles):
HKEY_CLASSES_ROOT
& nbsp & nbsp HKEY_CURRENT_USER
& nbsp & nbsp HKEY_LOCAL_MACHINE
& nbsp & nbsp HKEY_USERS
& nbsp & nbsp HKEY_PERFORMANCE_DATA
& nbsp & nbsp HKEY_CURRENT_CONFIG
& nbsp & nbsp HKEY_DYN_DATA
Cada raíz puede tener los valores y claves. Los valores son datos que se almacenan bajo los nombres de los elementos (panel derecho del editor del registro). Las claves pueden tener valores y las claves de otras, formando una estructura de árbol (panel de la izquierda de RegEdit).
TREGISTRY
La TRegistry clase se declara en el Registro de la unidad, por lo que tendrá que agregar esta unidad a la cláusula uses de la unidad o programa que desea utilizar. Para tener acceso a un valor en el registro, primero debe crear un objeto de esta clase, asignar la raíz para su RootKey de la propiedad (los valores se definen en la unidad Windows) y, a continuación, intente abrir la llave con la OpenKey el método de función, que devolverá True en caso de éxito. A continuación, puede leer (con la ReadXxxx funciones) o escribir (con el WriteXxxx procedimientos) los valores de la clave abrir y, después de eso, usted debe cerrar la llave con CloseKey.
Cuando haya terminado con el registro, se debe liberar el registro de objetos que usted ha creado.
Vamos a ver un ejemplo de cómo obtener el nombre del procesador de nuestro ordenador:
usos de Registro, Ventanas, cuadros de diálogo
& nbsp & nbsp procedure TForm1.Button1Click(Sender: TObject)
& nbsp & nbsp var
& nbsp & nbsp & nbsp & nbsp Reg: TRegistry
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Reg := TRegistry.Crear
& nbsp & nbsp & nbsp & nbsp Reg.RootKey := HKEY_LOCAL_MACHINE
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si Reg.OpenKey('/Hardware/Descripción/System'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp '/CentralProcessor/0', False) then begin
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ShowMessage(Reg.ReadString('Identificador'))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.CloseKey
& nbsp & nbsp & nbsp & nbsp end // si
& nbsp & nbsp & nbsp & nbsp Reg.Libre
& nbsp & nbsp final
Se puede ver otro ejemplo en el artículo de la Determinación de la aplicación asociada.
por supuesto, hay muchas más cosas que usted puede hacer con el registro, como la creación y eliminación de claves y valores...
La TRegistryIniFile clase hace que sea más sencillo para aplicaciones a escribir y a leer su información de configuración y desde el registro, mientras que TRegistry opera en un nivel inferior.
GETREGISTRYDATA
Para simplificar la lectura de un valor de datos del registro que puede utilizar la siguiente función que se puede leer cualquier tipo de datos en el registro y devuelve una variante (string o integer). La función que realiza el control de excepciones.
utiliza el Registro de Windows, SysUtils
& nbsp & nbsp función GetRegistryData(RootKey: HKEY Key, Value: string): variante
& nbsp & nbsp var
& nbsp & nbsp & nbsp & nbsp Reg: TRegistry
& nbsp & nbsp & nbsp & nbsp RegDataType: TRegDataType
& nbsp & nbsp & nbsp & nbsp DataSize, Len: integer
& nbsp & nbsp & nbsp & nbsp s: string
& nbsp & nbsp etiqueta cantread
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Reg := nil
& nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg := TRegistry.Crear(KEY_QUERY_VALUE)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.RootKey := RootKey
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si Reg.OpenKeyReadOnly(Clave), a continuación, empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp RegDataType := Reg.GetDataType(Valor)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (RegDataType = rdString) o
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp (RegDataType = rdExpandString) a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := Reg.ReadString(Valor)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp cosa si RegDataType = rdInteger, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := Reg.ReadInteger(Valor)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp cosa si RegDataType = rdBinary, a continuación, empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp DataSize := Reg.GetDataSize(Valor)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si DataSize = -1, a continuación, pasar a cantread
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp SetLength(s, DataSize)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Len := Reg.ReadBinaryData(Valor, PChar(s)^, DataSize)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si Len <> DataSize, a continuación, pasar a cantread
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := s
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp end else
cantread:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elevar la Excepción.Crear(SysErrorMessage(ERROR_CANTREAD))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp excepto
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp s := ' // cancela la asignación de memoria si asignados
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.CloseKey
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elevar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.CloseKey
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp end else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elevar la Excepción.Crear(SysErrorMessage(GetLastError))
& nbsp & nbsp & nbsp & nbsp excepto
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.Libre
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elevar
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp excepto
& nbsp & nbsp & nbsp & nbsp Reg.Libre
& nbsp & nbsp & nbsp & nbsp elevar
& nbsp & nbsp final
LLAMADA de EJEMPLO
ShowMessage(GetRegistryData(HKEY_LOCAL_MACHINE,
& nbsp & nbsp & nbsp & nbsp '/Hardware/Descripción/System/CentralProcessor/0', 'Identificador'))
SETREGISTRYDATA
Para simplificar la escritura de un valor de datos en el registro puede utilizar el siguiente procedimiento en el que se puede escribir cualquier tipo de datos para el registro.
El procedimiento que se realiza el manejo de excepciones.
utiliza el Registro de Windows, SysUtils
& nbsp & nbsp procedimiento SetRegistryData(RootKey: HKEY Clave, Valor: string
& nbsp & nbsp & nbsp & nbsp RegDataType: TRegDataType de Datos: variante)
& nbsp & nbsp var
& nbsp & nbsp & nbsp & nbsp Reg: TRegistry
& nbsp & nbsp & nbsp & nbsp s: cadena
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Reg := nil
& nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg := TRegistry.Crear(KEY_WRITE)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.RootKey := RootKey
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si Reg.OpenKey(Clave, True) then begin
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si RegDataType = rdUnknown, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp RegDataType := Reg.GetDataType(Valor)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si RegDataType = rdString, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.WriteString(Valor, Datos)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp cosa si RegDataType = rdExpandString, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.WriteExpandString(Valor, Datos)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp cosa si RegDataType = rdInteger, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.WriteInteger(Valor, Datos)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp cosa si RegDataType = rdBinary, a continuación, empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp s := Datos
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.WriteBinaryData(Valor, PChar(s)^, Longitud de la(s))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp end else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elevar la Excepción.Crear(SysErrorMessage(ERROR_CANTWRITE))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp excepto
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.CloseKey
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elevar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.CloseKey
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp end else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elevar la Excepción.Crear(SysErrorMessage(GetLastError))
& nbsp & nbsp & nbsp & nbsp excepto
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.Libre
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elevar
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp Reg.Libre
& nbsp & nbsp final
LLAMADA de EJEMPLO
SetRegistryData(HKEY_LOCAL_MACHINE,
& nbsp & nbsp & nbsp & nbsp '/Software/Microsoft/Windows/CurrentVersion',
& nbsp & nbsp & nbsp & nbsp 'RegisteredOrganization', rdString, 'el Lacio Software')
El acceso al registro de windows
El acceso al registro de windows : Multi-millones de consejos para hacer su vida mas facil.
Este articulo presenta un par de funciones utiles, que facilitan la lectura y escritura de valores en el Registro de Windows.
¿QUE ES EL REGISTRO?
es donde Windows almacena muchas de sus opciones de configuracion, y tambien permite a las aplicaciones acceder a estos datos, asi como guardar sus propios datos.
Si quieres echar un vistazo en el registro, solo tiene que ejecutar el REGEDIT.EXE solicitud que se encuentra en el directorio de Windows. Tenga cuidado de no cambiar nada o podria terminar arruinando su instalacion!
Ahora, los datos en el registro se almacena en una estructura de arbol. Hay muchas raices (muchos de los arboles):
HKEY_CLASSES_ROOT
& nbsp & nbsp HKEY_CURRENT_USER
& nbsp & nbsp HKEY_LOCAL_MACHINE
& nbsp & nbsp HKEY_USERS
& nbsp & nbsp HKEY_PERFORMANCE_DATA
& nbsp & nbsp HKEY_CURRENT_CONFIG
& nbsp & nbsp HKEY_DYN_DATA
Cada raiz puede tener los valores y claves. Los valores son datos que se almacenan bajo los nombres de los elementos (panel derecho del editor del registro). Las claves pueden tener valores y las claves de otras, formando una estructura de arbol (panel de la izquierda de RegEdit).
TREGISTRY
La TRegistry clase se declara en el Registro de la unidad, por lo que tendra que agregar esta unidad a la clausula uses de la unidad o programa que desea utilizar. Para tener acceso a un valor en el registro, primero debe crear un objeto de esta clase, asignar la raiz para su RootKey de la propiedad (los valores se definen en la unidad Windows) y, a continuacion, intente abrir la llave con la OpenKey el metodo de funcion, que devolvera True en caso de exito. A continuacion, puede leer (con la ReadXxxx funciones) o escribir (con el WriteXxxx procedimientos) los valores de la clave abrir y, despues de eso, usted debe cerrar la llave con CloseKey.
Cuando haya terminado con el registro, se debe liberar el registro de objetos que usted ha creado.
Vamos a ver un ejemplo de como obtener el nombre del procesador de nuestro ordenador:
usos de Registro, Ventanas, cuadros de dialogo
& nbsp & nbsp procedure TForm1.Button1Click(Sender: TObject)
& nbsp & nbsp var
& nbsp & nbsp & nbsp & nbsp Reg: TRegistry
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Reg := TRegistry.Crear
& nbsp & nbsp & nbsp & nbsp Reg.RootKey := HKEY_LOCAL_MACHINE
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si Reg.OpenKey('/Hardware/Descripcion/System'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp '/CentralProcessor/0', False) then begin
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ShowMessage(Reg.ReadString('Identificador'))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.CloseKey
& nbsp & nbsp & nbsp & nbsp end // si
& nbsp & nbsp & nbsp & nbsp Reg.Libre
& nbsp & nbsp final
Se puede ver otro ejemplo en el articulo de la Determinacion de la aplicacion asociada.
por supuesto, hay muchas mas cosas que usted puede hacer con el registro, como la creacion y eliminacion de claves y valores...
La TRegistryIniFile clase hace que sea mas sencillo para aplicaciones a escribir y a leer su informacion de configuracion y desde el registro, mientras que TRegistry opera en un nivel inferior.
GETREGISTRYDATA
Para simplificar la lectura de un valor de datos del registro que puede utilizar la siguiente funcion que se puede leer cualquier tipo de datos en el registro y devuelve una variante (string o integer). La funcion que realiza el control de excepciones.
utiliza el Registro de Windows, SysUtils
& nbsp & nbsp funcion GetRegistryData(RootKey: HKEY Key, Value: string): variante
& nbsp & nbsp var
& nbsp & nbsp & nbsp & nbsp Reg: TRegistry
& nbsp & nbsp & nbsp & nbsp RegDataType: TRegDataType
& nbsp & nbsp & nbsp & nbsp DataSize, Len: integer
& nbsp & nbsp & nbsp & nbsp s: string
& nbsp & nbsp etiqueta cantread
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Reg := nil
& nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg := TRegistry.Crear(KEY_QUERY_VALUE)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.RootKey := RootKey
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si Reg.OpenKeyReadOnly(Clave), a continuacion, empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp RegDataType := Reg.GetDataType(Valor)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (RegDataType = rdString) o
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp (RegDataType = rdExpandString) a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := Reg.ReadString(Valor)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp cosa si RegDataType = rdInteger, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := Reg.ReadInteger(Valor)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp cosa si RegDataType = rdBinary, a continuacion, empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp DataSize := Reg.GetDataSize(Valor)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si DataSize = -1, a continuacion, pasar a cantread
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp SetLength(s, DataSize)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Len := Reg.ReadBinaryData(Valor, PChar(s)^, DataSize)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si Len <> DataSize, a continuacion, pasar a cantread
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := s
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp end else
cantread:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elevar la Excepcion.Crear(SysErrorMessage(ERROR_CANTREAD))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp excepto
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp s := ' // cancela la asignacion de memoria si asignados
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.CloseKey
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elevar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.CloseKey
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp end else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elevar la Excepcion.Crear(SysErrorMessage(GetLastError))
& nbsp & nbsp & nbsp & nbsp excepto
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.Libre
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elevar
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp excepto
& nbsp & nbsp & nbsp & nbsp Reg.Libre
& nbsp & nbsp & nbsp & nbsp elevar
& nbsp & nbsp final
LLAMADA de EJEMPLO
ShowMessage(GetRegistryData(HKEY_LOCAL_MACHINE,
& nbsp & nbsp & nbsp & nbsp '/Hardware/Descripcion/System/CentralProcessor/0', 'Identificador'))
SETREGISTRYDATA
Para simplificar la escritura de un valor de datos en el registro puede utilizar el siguiente procedimiento en el que se puede escribir cualquier tipo de datos para el registro.
El procedimiento que se realiza el manejo de excepciones.
utiliza el Registro de Windows, SysUtils
& nbsp & nbsp procedimiento SetRegistryData(RootKey: HKEY Clave, Valor: string
& nbsp & nbsp & nbsp & nbsp RegDataType: TRegDataType de Datos: variante)
& nbsp & nbsp var
& nbsp & nbsp & nbsp & nbsp Reg: TRegistry
& nbsp & nbsp & nbsp & nbsp s: cadena
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Reg := nil
& nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg := TRegistry.Crear(KEY_WRITE)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.RootKey := RootKey
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si Reg.OpenKey(Clave, True) then begin
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si RegDataType = rdUnknown, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp RegDataType := Reg.GetDataType(Valor)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si RegDataType = rdString, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.WriteString(Valor, Datos)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp cosa si RegDataType = rdExpandString, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.WriteExpandString(Valor, Datos)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp cosa si RegDataType = rdInteger, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.WriteInteger(Valor, Datos)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp cosa si RegDataType = rdBinary, a continuacion, empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp s := Datos
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.WriteBinaryData(Valor, PChar(s)^, Longitud de la(s))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp end else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elevar la Excepcion.Crear(SysErrorMessage(ERROR_CANTWRITE))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp excepto
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.CloseKey
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elevar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.CloseKey
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp end else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elevar la Excepcion.Crear(SysErrorMessage(GetLastError))
& nbsp & nbsp & nbsp & nbsp excepto
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Reg.Libre
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elevar
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp Reg.Libre
& nbsp & nbsp final
LLAMADA de EJEMPLO
SetRegistryData(HKEY_LOCAL_MACHINE,
& nbsp & nbsp & nbsp & nbsp '/Software/Microsoft/Windows/CurrentVersion',
& nbsp & nbsp & nbsp & nbsp 'RegisteredOrganization', rdString, 'el Lacio Software')
El acceso al registro de windows
By Consejos Y Trucos
El acceso al registro de windows : Multi-millones de consejos para hacer su vida más fácil.