In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Problema con TRegistry()

Foro público de Xailer en español
Responder
Avatar de Usuario
Shadax
Mensajes: 104
Registrado: Lun Mar 14, 2011 12:32 pm

Problema con TRegistry()

Mensaje 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.
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

Problema con TRegistry()

Mensaje 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?
Avatar de Usuario
Shadax
Mensajes: 104
Registrado: Lun Mar 14, 2011 12:32 pm

Problema con TRegistry()

Mensaje 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.
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

Problema con TRegistry()

Mensaje por jlalin »

Joan,
prueba así­:
:OpenKey("SOFTWAREMicrosoftNET Framework SetupNDPv2.0.50727"
MsgSysError( :nLastError )
Saludos,
José Lalí­n
Avatar de Usuario
Shadax
Mensajes: 104
Registrado: Lun Mar 14, 2011 12:32 pm

Problema con TRegistry()

Mensaje 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.
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

Problema con TRegistry()

Mensaje 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
Avatar de Usuario
Shadax
Mensajes: 104
Registrado: Lun Mar 14, 2011 12:32 pm

Problema con TRegistry()

Mensaje 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!!.
Responder