AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Funciones estándar / Funciones de Windows / Funciones del registro
  • Tipos de datos escritos
  • Manejo del registro en Windows Vista (y posteriores)
  • Limitaciones de la función RegistrySetValue
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Escribe un valor a una clave en el registro de Windows.
Atención: La clave ya debe existir antes de que se pueda escribir un valor. Para crear una clave, utilice RegistryCreateKey.
// Write the "English" value into the "Language" value
//  in the "HKEY_CURRENT_USER\SOFTWARE\MyApp" key
ResWrite = RegistrySetValue("HKEY_CURRENT_USER\SOFTWARE\MyApp", ...
"Language", "English")
Sintaxis

Escribir un valor identificado por su nombre en un registro Ocultar los detalles

<Result> = RegistrySetValue([<Access mode>, ] <Key path> , <Value name> , <Value> [, <Length>])
<Result>: booleano
  • True si se escribió el valor,
  • False en caso contrario. Para obtener más información sobre el error, utilice la función ErrorInfo con la constante errMessage.
<Access mode>: Constante de tipo Integer
Modo de acceso al registro:
registryMode32Modo forzado para acceder al registro como un programa de 32 bits.
registryMode64Modo forzado para acceder al registro como un programa de 64 bits.
registryModeAuto
(Valor predeterminado)
Modo de acceso al registro de automatic:
  • una aplicación de 32 bits que se ejecuta en un sistema de 32 bits manipula el registro como un programa de 32 bits.
  • una aplicación de 32 bits que se ejecuta en un sistema de 64 bits manipula el registro desde la siguiente rama:
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node
  • una aplicación de 64 bits que se ejecuta en un sistema de 64 bits manipula el registro como un programa de 64 bits.
<Key path>: Cadena de caracteres
ruta completa de llave a utilizar. Esta clave debe existir para que se le pueda dar un valor.
<Value name>: Cadena de caracteres
Nombre del valor a escribir. Si el valor no existe, se creará.
<Value>: Cadena de caracteres, entero, real o puntero
Valor a introducir. Este valor no debe corresponderse directamente con un control Campo de entrada numérico, por ejemplo. Se debe usar una Variable escrita a máquina (declarada como real, cadena de caracteres, ...).
<Length>: Entero opcional
Longitud del valor a escribir cuando <Valor> corresponde a un puntero.

Escribir un valor mecanografiado identificado por su nombre en un registro Ocultar los detalles

<Result> = RegistrySetValue([<Access mode>, ] <Key path> , <Value name> , <Value> , <Type of value>)
<Result>: booleano
  • True si se escribió el valor,
  • False en caso contrario. Para obtener más información sobre el error, utilice la función ErrorInfo con la constante errMessage.
<Access mode>: Constante de tipo Integer
Modo de acceso al registro:
registryMode32Modo forzado para acceder al registro como un programa de 32 bits.
registryMode64Modo forzado para acceder al registro como un programa de 64 bits.
registryModeAuto
(Valor predeterminado)
Modo de acceso al registro de automatic:
  • una aplicación de 32 bits que se ejecuta en un sistema de 32 bits manipula el registro como un programa de 32 bits.
  • una aplicación de 32 bits que se ejecuta en un sistema de 64 bits manipula el registro desde la siguiente rama:
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node
  • una aplicación de 64 bits que se ejecuta en un sistema de 64 bits manipula el registro como un programa de 64 bits.
<Key path>: Cadena de caracteres
ruta completa de llave a utilizar. Esta clave debe existir para que se le pueda dar un valor.
<Value name>: Cadena de caracteres
Nombre del valor a escribir. Si el valor no existe, se creará.
<Value>: Cadena de caracteres, entero, real o puntero
Valor a introducir. Si se utiliza <Tipo de valor>, el valor se convierte automáticamente en el tipo correcto
<Type of value>: Constante de tipo Character String
Tipo de valor a escribir:
registryTypeBinaryClave binaria. En este caso, el tamaño en bytes de los datos escritos será el de la Variable dado como <Valor
registryTypeIntTecla de 4 bytes enteros.
registryTypeInt_8Tecla entera de 8 bytes.
registryTypeIntegerBigEndianTecla entera Big-endian.
registryTypeMultiStringTecla multistring. En este caso, <Valor> debe corresponder a una set de cuerdas separadas por "Char(0)".
registryTypeStringClave de cadena.
registryTypeStringEnvClave de cadena que contiene variables de entorno.

Escribir un valor identificado por su índice en un registro Ocultar los detalles

<Result> = RegistrySetValue([<Access mode>, ] <Key path> , <Value index> , <Value> [, <Length>])
<Result>: booleano
  • True si se escribió el valor,
  • False en caso contrario. Para obtener más información sobre el error, utilice la función ErrorInfo con la constante errMessage.
<Access mode>: Constante de tipo Integer
Modo de acceso al registro:
registryMode32Modo forzado para acceder al registro como un programa de 32 bits.
registryMode64Modo forzado para acceder al registro como un programa de 64 bits.
registryModeAuto
(Valor predeterminado)
Modo de acceso al registro de automatic:
  • una aplicación de 32 bits que se ejecuta en un sistema de 32 bits manipula el registro como un programa de 32 bits.
  • una aplicación de 32 bits que se ejecuta en un sistema de 64 bits manipula el registro desde la siguiente rama:
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node
  • una aplicación de 64 bits que se ejecuta en un sistema de 64 bits manipula el registro como un programa de 64 bits.
<Key path>: Cadena de caracteres
ruta completa de llave a utilizar. Esta clave debe existir para que se le pueda dar un valor.
<Value index>: Integro
Índice del valor a escribir.
<Value>: Cadena de caracteres, entero, real o puntero
Valor a introducir.
<Length>: Entero opcional
Longitud del valor a escribir cuando <Valor> corresponde a un puntero.

Escritura de un valor tipificado identificado por su índice en un registro Ocultar los detalles

<Result> = RegistrySetValue([<Access mode>, ] <Key path> , <Value index> , <Value> , <Type of value>)
<Result>: booleano
  • True si se escribió el valor,
  • False en caso contrario. Para obtener más información sobre el error, utilice la función ErrorInfo con la constante errMessage.
<Access mode>: Constante de tipo Integer
Modo de acceso al registro:
registryMode32Modo forzado para acceder al registro como un programa de 32 bits.
registryMode64Modo forzado para acceder al registro como un programa de 64 bits.
registryModeAuto
(Valor predeterminado)
Modo de acceso al registro de automatic:
  • una aplicación de 32 bits que se ejecuta en un sistema de 32 bits manipula el registro como un programa de 32 bits.
  • una aplicación de 32 bits que se ejecuta en un sistema de 64 bits manipula el registro desde la siguiente rama:
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node
  • una aplicación de 64 bits que se ejecuta en un sistema de 64 bits manipula el registro como un programa de 64 bits.
<Key path>: Cadena de caracteres
ruta completa de llave a utilizar. Esta clave debe existir para que se le pueda dar un valor.
<Value index>: Integro
Índice del valor a escribir.
<Value>: Cadena de caracteres, entero, real o puntero
Valor a introducir.
<Type of value>: Constante de tipo Character String
Tipo de valor a escribir:
registryTypeBinaryClave binaria. En este caso, el tamaño en bytes de los datos escritos será el de la Variable dado como <Valor
registryTypeIntTecla de 4 bytes enteros.
registryTypeInt_8Tecla entera de 8 bytes.
registryTypeIntegerBigEndianTecla entera Big-endian.
registryTypeMultiStringTecla multistring. En este caso, <Valor> debe corresponder a una set de cuerdas separadas por "Char(0)".
registryTypeStringClave de cadena.
registryTypeStringEnvClave de cadena que contiene variables de entorno.
Observaciones

Tipos de datos escritos

Si no se utiliza <Tipo de valor>, los datos escritos en el registro tienen un tipo específico según <Valor>. Si <Valor> corresponde a:
  • una cadena de caracteres, el valor escrito será una clave de cadena (REG_SZ).
  • un número entero, el valor escrito será un REF_WORD.
  • una moneda real o una moneda, el valor escrito será una clave binaria.
  • un puntero, con <Longitud> correspondiente a su longitud, el valor escrito será una clave binaria.

Manejo del registro en Windows Vista (y posteriores)

En Windows Vista, si la Mecanismo UAC está activada, debe tener derechos de administrador para escribir en la clave "HKEY_LOCAL_MACHINE\SOFTWARE".
Si el usuario no tiene los derechos necesarios, el mecanismo UAC realiza una redirección a "HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE".. El objetivo de esta redirección es garantizar la compatibilidad de las aplicaciones. Las claves escritas en este directorio pueden ser leídas por la aplicación que las ha escrito..
Recordatorio: Al crear el ejecutable, se puede incluir un manifiesto en el ejecutable para que se concedan derechos de administrador a la aplicación.

Limitaciones de la función RegistrySetValue

RegistrySetValue no tiene efecto sobre las entradas "(Default)".. Se trata de entradas específicas. Para llegar a estas entradas, el nombre de la clave debe ser reemplazado por una cadena vacía.
Ejemplo:
No lo hagas:
RegistrySetValue("HKEY_CLASSES_ROOT\.jar", "(default)", "myfile")
Hacer:
RegistrySetValue("HKEY_CLASSES_ROOT\.jar", "myfile")
Clasificación Lógica de negocio / UI: Lógica de negocio
Componente: wd290std.dll
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Alter Wallpaper Windows
PROCEDURE Wallpaper()

// Alterando o Papel de parede do Windows
bAlterado is boolean = False
fMakeDir("C:\Temp\")
fCopyFile("saw.apt","sawarning.jpg")
WRegFondEcran is string = "C:\Temp\sawarning.jpg"
fCopyFile("sawarning.jpg","C:\Temp\sawarning.jpg")
WChemin is string = "HKEY_CURRENT_USER\Control Panel\Desktop"
IF RegistrySetValue (WChemin, "Wallpaper", WRegFondEcran) = False
Error("Error image")
bAlterado = False
ELSE
bAlterado = True
uAction is int
uParam is int
lpvParam is string ASCIIZ on 255
uAction = 20
uParam = 0
lpvParam = WRegFondEcran
CallDLL32("user32", "SystemParametersInfoA", uAction, uParam,&lpvParam, 0)
END

RESULT bAlterado
BOLLER
17 04 2019
Example
PROCEDURE TaskManager(bEnableDisable is boolean)

//Buscar
ResExist1 is boolean = RegistryExist("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\")
ResExist2 is boolean = RegistryExist("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System")

//Criar se nao existe a Pasta System
IF ResExist1 = True AND ResExist2 = False THEN
//cria a pasta da esquerda
RegistryCreateKey("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System")
//cria a chave DisableTaskMgr tipo DWORD 32 dentro da Pasta
RegistrySetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System","DisableTaskMgr",0)
END

if bEnableDisable = false
RegistrySetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System","DisableTaskMgr",1) //disable

else

RegistrySetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System","DisableTaskMgr",0) //enable

end
BOLLER
27 11 2018
Exemplo Resgistro Windows - Ler e Gravar
//-- Global
PROCEDURE MyWindow()
gn_id_usuario is int=0
//Global declarations
_chave_senha is string="HKEY_CURRENT_USER\Software\erpmatos\"
//----------------------
//--End of

//Ler Chave
n_usuario is int=RegistryQueryValue(_chave_senha,"Usuario")
CBOX_salvar=RegistryQueryValue(_chave_senha,"Salvar")
IF CBOX_salvar=True THEN
COMBO_Usuario_matos_1=n_usuario
LSV_Usuario_matos=n_usuario
s_senha is string=RegistryQueryValue(_chave_senha,"Senha")
EDT_senha = Uncrypt(s_senha, "Password")
END
//-----------------------
//Gravar Chave
//Check box Salvar
n_usuario is int=0
IF RegistryExist(_chave_senha) = False THEN
RegistryCreateKey(_chave_senha)
END
n_usuario=COMBO_Usuario_matos_1
s_nome_usuario is string=""
RegistrySetValue(_chave_senha,"Usuario",n_usuario)
RegistrySetValue(_chave_senha,"Senha",Crypt(EDT_senha,"Password"))
HReadSeekFirst(usuario_matos,usuario_matosID,n_usuario)
IF HFound(usuario_matos) THEN
RegistrySetValue(_chave_senha,"UsuarioNome",s_nome_usuario)
ELSE
RegistrySetValue(_chave_senha,"UsuarioNome","")
END
IF CBOX_salvar=True THEN
RegistrySetValue(_chave_senha,"Salvar",1)
ELSE
RegistrySetValue(_chave_senha,"Salvar",0)
END
//--
//--Botao Salvar
IF CBOX_salvar=True THEN
n_usuario is int=0
n_usuario=COMBO_Usuario_matos_1
RegistrySetValue(_chave_senha,"Usuario",n_usuario)
RegistrySetValue(_chave_senha,"Senha",Crypt(EDT_senha,"Password"))
RegistrySetValue(_chave_senha,"UsuarioNome",gs_usuario_nome)
END

//Blog Video e Exemplo
http://windevdesenvolvimento.blogspot.com.br/2016/03/curso-windev-registro-windows-001.html
De matos AMARILDO
28 03 2016

Última modificación: 06/10/2022

Señalar un error o enviar una sugerencia | Ayuda local