Página 1 de 1
Problemas al acceder al registro deWindows
Publicado: Mié Feb 24, 2016 7:20 am
por bingen
Buenas XTeam.
He accedido al registro alguna vez para leer alkguna cosilla, pero esta vez no se que pasa. SI hago esto
WITH OBJECT TRegistry():New()
:Root := HKEY_LOCAL_MACHINE
IF :OpenKey( "SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" ) == 0
Msginfo(ToString(:GetNumeric( "PortNumber", 0 )))
:CloseKey()
ENDIF
END
El OpenKey me devuelve un error 2 y en el manual no se indican los errores, ni tampoco los encuentro mirando por Internet. Me podrían decir donde encontrarlos para saber que es lo quwe hago mal??
Gracias y salu2.
Re: Problemas al acceder al registro deWindows
Publicado: Mié Feb 24, 2016 10:26 am
por ignacio
Hola Bingen,
Sé que en Windows 10 hay unos problemas tremendos para acceder al registro ya que casi todas sus ramas están bloqueadas, sobre todo, las de LOCAL_MACHINE. José Giménez se ha peleado mucho con este asunto y espero que te pueda decir algo más al respecto.
Un saludo
Re: Problemas al acceder al registro deWindows
Publicado: Mié Feb 24, 2016 11:30 am
por jfgimenez
Bingen,
sí, me he peleado bastante con Windows 10 y el registro. Lo que estás intentando hacer puede que te funcione abriendo una a una cada clave de la rama. P.ej:
Código: Seleccionar todo
IF :OpenKey( "SYSTEM" ) == 0
IF :OpenKey( "CurrentControlSet" ) == 0
IF :OpenKey( "Control" ) == 0
IF :OpenKey( "Terminal Server" ) == 0
IF :OpenKey( "WinStations" ) == 0
IF :OpenKey( "RDP-Tcp" ) == 0
...
Por desgracia, cada vez que hay una nueva actualización de windows cambia su comportamiento. Vamos, que unos días funciona y otros no... las cosas caóticas de las actualizaciones de Windows 10
Por otro lado, si en algún momento tienes que guardar algo en el registro de windows... un consejo: usa HKEY_CURRENT_USER
Intentar usar HKEY_LOCAL_MACHINE parar guardar algo es luchar contra los elementos. Hay una cosa que MS ha llamado "virtualización del registro de windows", que no es más que la demostración de que cuando estás desarrollando no puedes tomar alcohol ni drogas, que parece que fue lo que pasó cuando desarrollaron esa parte de windows.
Para colmo de males, hoy en día no hay ningún sitio "oficial" en windows donde un programa pueda guardar algo que sirva para todos los usuarios del sistema. P.ej., imagina que quieres guardar con tu programa información del tipo "impresora para tiques", y que esta información esté disponible para cualquier usuario que acceda al ordenador. Pues bien, si usas HKEY_CURRENT_USER sólo vale para el usuario con el que has entrado. Lo lógico sería utilzar HKEY_LOCAL_MACHINE, pero ¡sorpresa! la virtualización del registro hace que se guarde en una subrama de HKEY_CURRENT_USER, con lo que sólo vale para el usuario actual. Vamos, lo dicho: hagas lo que hagas sólo vale para el usuario actual.
Re: Problemas al acceder al registro deWindows
Publicado: Mié Feb 24, 2016 7:04 pm
por bingen
Que lio
Creo que voy a empezar a tomar alcohol y drogas, asi quizás empiece a entender que hacen estos de Microsoft.
Muchas gracias por vuestras aclaraciones, voy a intentar el paso a paso.
Salu2.
Re: Problemas al acceder al registro deWindows
Publicado: Mié Feb 24, 2016 7:24 pm
por bingen
Nada ni con esto no va para nada saca un error 5 que no se que será... pero desisto.
IF :OpenKey( "SYSTEM" ) == 0
IF :OpenKey( "CurrentControlSet" ) == 0
IF :OpenKey( "Control" ) == 0
IF :OpenKey( "Terminal Server" ) == 0
IF :OpenKey( "WinStations" ) == 0
IF :OpenKey( "RDP-Tcp" ) == 0
Msginfo(ToString(:GetNumeric( "PortNumber", 0 )))
Endif
Endif
Endif
Endif
Endif
Endif
MsgInfo(:nLastError)