Página 1 de 1

Problema con TRegistry()

Publicado: Jue Nov 17, 2011 10:32 am
por Shadax
Buenos dí­as a todos.
Esta mañana he probado a acceder al registro via la clase TRegistry() y estoy teniendo problemas.
En el PRG tengo el #include "WinReg.api"
El código es el siguiente:
WITH OBJECT TRegistry():New()
:Root := HKEY_LOCAL_MACHINE
IF :OpenKey("SOFTWAREMicrosoftNET Framework SetupNDPv2.0.50727") == 0
msgStop("Entra", "Entra")
:CloseKey()
ENDIF
END
Pues bien, no le da la gana entrar al msgStop()
1) Tengo permisos de acceso a la clave.
2) La ruta es correcta ( la he verificado varias veces )
3) La versión de Xailer es la 2.5.0 BETA
Otro detalle que he visto en la ayuda es que OpenKey() requiere de 3 parámetros obligatorios y en todos los ejemplos que he visto sólo se utiliza 1 parámetro:

¿Supongo que debéis actualizar la documentación?
Gracias por todo y un saludo.

Problema con TRegistry()

Publicado: Jue Nov 17, 2011 3:15 pm
por jose.luis
Juan Ramón,
Mira qué error te devuelve.
Saludos,
José Luis Capel
"Joan Ramón" escribió en el mensaje de
noticias:4ec4d4bc$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Buenos dí­as a todos.
Esta mañana he probado a acceder al registro via la clase
TRegistry() y estoy teniendo problemas.
En el PRG tengo el #include "WinReg.api"
El código es el siguiente:
WITH OBJECT TRegistry():New()
:Root := HKEY_LOCAL_MACHINE
IF :OpenKey("SOFTWAREMicrosoftNET Framework
SetupNDPv2.0.50727") == 0
msgStop("Entra", "Entra")
:CloseKey()
ENDIF
END
Pues bien, no le da la gana entrar al msgStop()
1) Tengo permisos de acceso a la clave.
2) La ruta es correcta ( la he verificado varias veces )
3) La versión de Xailer es la 2.5.0 BETA
Otro detalle que he visto en la ayuda es que OpenKey()
requiere de 3 parámetros obligatorios y en todos los
ejemplos que he visto sólo se utiliza 1 parámetro:
¿Supongo que debéis actualizar la documentación?

Problema con TRegistry()

Publicado: Jue Nov 17, 2011 4:27 pm
por Shadax
He echado un ojo al código y he visto que el parámetro <nAccess> del método OpenKey() es ignorado siempre. Pongas lo que pongas da igual. Lo importante es el parámetro <nOptions> que por defecto va a 0.
Si tienes problemas de permisos basta con ponerlo a 1 para su lectura sólamente.
La cosa quedarí­a así­:
- oRegistry:OpenKey("ClaveClaveClave", 1)
Supongo que el 1 indica acceso en modo lectura frente a 0 que será lectura/escritura.

Problema con TRegistry()

Publicado: Jue Nov 17, 2011 4:29 pm
por jlalin
Joan,
prueba así­:
:OpenKey("SOFTWAREMicrosoftNET Framework SetupNDPv2.0.50727"
MsgSysError( :nLastError )
Saludos,
José Lalí­n

Problema con TRegistry()

Publicado: Jue Nov 17, 2011 4:47 pm
por Shadax
El asunto es que el parámetro <nAccess> no sirve. Realmente RegOpenKeyEx ignora el parámetro <nAccess> y sólamente opera con <nOptions>.
El método OpenKey debiera ser así­: OpenKey(<cKey>, <nAccess>) en dónde 0 es acceso lectura-escritura y 1 es acceso lectura.
Si podéis echarle un ojo al source de Registry veréis en el pragma que la llamada a la función establece un parámetro a cero siempre.

Problema con TRegistry()

Publicado: Jue Nov 17, 2011 4:53 pm
por jlalin
Joan,
la documentación está mal. En el fuente no hay ningún parámetro nOptions.
La sugerencia era para que puedas ver el texto del código de error que
retorna el sistema.
Saludos,
José Lalí­n

Problema con TRegistry()

Publicado: Jue Nov 17, 2011 5:34 pm
por Shadax
Si, ya me he dado cuenta, a eso me referí­a. Me devolví­a un error de permiso de acceso. ( Creo que era el 5 )
Ya lo he solventado, pero la documentación me ha confundido un poco.
Gracias por tu tiempo!!.