Título: Permisos acceso a clave de registro PC remoto Publicado por: jarpon en 30 Enero 2022, 20:18 pm Hola a todos
Intento poder leer unos registros entre los PC's de 2 maquinas con vbscript. El script de lectura en la maquina local funciona correctamente, pero cuando quiero acceder al registro de la maquina remota siempre obtengo el error: No se puede abrir el acceso HKEY_LOCAL_MACHINE. Un error impide abrir la clave. Los dos PC's tienen: - Activados el servicio Registro remoto. - Puedo conectar los registros remotos con regedit. - me conecto como usuario administrador con permisos totales. - Firewall estan desactivados. - Escritorio remoto habilitados. - Archivos e impresoras compartidas en redes publicas i privadas He buscado por internet mil soluciones de permisos y directivas si exito. Alguna idea? Gracias por adelantado Título: Re: Permisos acceso a clave de registro PC remoto Publicado por: .xAk. en 4 Febrero 2022, 23:12 pm puedes utilizar runas para el usuario autorizado ¿cual es el error? ¿Cómo los intentas abrir? ¿has autorizado en la máquina local al usuario y su máquina remota que puede acceder? RemoteRegistry debe estar habilitado.
How to Connect to a Remote Registry (https://www.lifewire.com/how-to-connect-to-a-remote-registry-2625147) How to Enable the Remote Registry Service in Windows Título: Re: Permisos acceso a clave de registro PC remoto Publicado por: jarpon en 6 Febrero 2022, 22:20 pm Hola
Gracias por tu aporte, todo lo que dice el link lo hice, creo que bien pero siempre me deniega el acceso. Set objShell = CreateObject("WScript.Shell") sPRUEBA="\\XXX\HKEY_LOCAL_MACHINE\SOFTWARE\PRUEBA\PRUEBA" VALOR=objShell.RegRead(sPRUEBA) MsgBox("The value is " & VALOR) VALOR=4 MsgBox(sPRUEBA) objShell.RegWrite sPRUEBA,VALOR,"REG_DWORD" NUEVOVALOR=objShell.RegRead(sPRUEBA) MsgBox("The value is " & NUEVOVALOR) Set objShell = Nothing Este es el código que utilizo y me funciona en local, pero en remoto he probado de mil formas y siempre me da error de raíz no valida en la clave de registro. Veo los registro remotos desde regedit haciendo "Conectar al registro de red..." No se si la ruta en remoto red local la escribo bien. Las siguientes rutas no me funcionan XXX\HKEY_LOCAL_MACHINE\SOFTWARE\PRUEBA \\XXX\HKEY_LOCAL_MACHINE\SOFTWARE\PRUEBA \\WORKGROUP\XXX\HKEY_LOCAL_MACHINE\SOFTWARE\PRUEBA no se que mas probar :-( Título: Re: Permisos acceso a clave de registro PC remoto Publicado por: .xAk. en 7 Febrero 2022, 03:46 am En local te funciona. ¿si lo escribes en local con el nombre de máquina también te va? No tengo el escenario remoto para probar pero suponiendo que es de tipo "REG_SZ" esto tendría que funcionar:
Código
Título: Re: Permisos acceso a clave de registro PC remoto Publicado por: EdePC en 8 Febrero 2022, 14:28 pm Me parece que RegRead y RegWrite no soportan máquinas remotas, por eso siempre te manda error de que la Raíz no es válida, entiéndase raíz a: HKLM o HKCU o HKEY_LOCAL_MACHINE o HKEY_CURRENT_USER
La opción de usar WMI como comenta .xAk. requiere bastante configuración de permisos. Supongo que lo más sencillo es usar Regedit.exe con su interfaz gráfica, pero si lo quieres hacer por Scripting lo más sencillo sería usar Reg.exe en un Batch o llamar al Batch desde VBScript o llamar solo a Reg.exe, el único requisito adicional es tener activado y con contraseña la cuenta de Administrador en la PC remota (PC servidor), y poner las credenciales en la PC cliente. Si se quiere usar un usuario en particular no funciona por la UAC, a no ser que se desactive dicha UAC. Últimamente se usa PSExec para este tipo de cosas pero ya es un programa externo. Para mi ejemplo voy a optar con activar y usar la cuenta de Administrador, se detallaran todos los requisitos para tenerlo claro: En la PC Remota/Servidor (192.168.0.102): Código
En la PC Cliente: Código
:: Opcionalmente se puede terminar eliminando las credenciales CmdKey /Delete:192.168.0.102 Con eso debería funcionar perfectamente para operaciones de Lectura y Escritura en el Registro remoto. El problema fundamental siempre son los permisos y credenciales. Título: Re: Permisos acceso a clave de registro PC remoto Publicado por: jarpon en 15 Febrero 2022, 10:48 am Hola .Xack. EePC
Muchas gracias por vuestra ayuda no había podido probar hasta ahora, debo ser muy torpe porque no me funciona. Prefiero hacerlo por VBscript porque necesito guardar el contenido en una variable del PC local que utilizaran otras rutinas de VBscript. Si leo el registro del usuario local, funciona sin problemas, pero cuando pongo el PC remoto me da el siguiente error: Linea:4 El servidor remoto no existe o no esta disponible: GetObject Código: 800A01CE Registro remoto esta activado en ambos PC's. Veos los equipos de red en ambos PC's y puedo abrir carpetas compartidas. He dado todos los permisos al usuario del pc remoto que ya es administrador. PC local puedo conectar al registro de red pero no puedo verlos. Si cambio el nombre PCREMOTO por el PCLOCAL funciona. Const HKEY_LOCAL_MACHINE = &H80000002 strComputer = "PCREMOTO" Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") strKeyPath = "SOFTWARE\WOW6432Node\PRUEBA" strValueName = "PRUEBAString" oReg.GetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, ver Wscript.Echo "Su valor es: " & ver Supongo que se trata de permisos, pero no consigo que funcione. Alguna idea? Gracias por adelantado Título: Re: Permisos acceso a clave de registro PC remoto Publicado por: EdePC en 17 Febrero 2022, 13:27 pm El nuevo método que estás implementando no requiere del servicio de Registro Remoto, sin embargo a nivel básico requiere tener habilitado el usuario Administrador con contraseña y puesto en el Firewall la Administración Remota. PERO lo más importante es el envío de credenciales que desde VBScript puro no lo vas a poder hacer, tendrías que usar RunAs.exe para hacer el envío de credenciales, por ejemplo:
En la PC Remota/Servidor (192.168.0.102): Código
En la PC Cliente: Código
Ahora bien, si no quieres usar RunAs.exe tendrías que dejar prácticamente sin protección al Servidor para deshabilitar toda obstrucción, esto incluso es algo complejo porque no suele venir fácilmente documentado. Citar Prefiero hacerlo por VBscript porque necesito guardar el contenido en una variable del PC local que utilizaran otras rutinas de VBscript. Si tu intención es solo guardar el resultante en una variable, puedes usar un método sencillo, por ejemplo el primero que planteé con Reg.exe o este último con RunAs.exe o usando herramientas de terceros como PSExec. El ejemplo para hacerlo con Reg.exe sería el siguiente: En la PC Remota/Servidor (192.168.0.102): Código
En la PC Cliente: Código
Con ello obtendrías en variable el resultado de usar el comando Reg.exe, en mi caso: Citar HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion ProductName REG_SZ Windows 7 Ultimate Obviamente el Script debe ser ejecutado como administrador, a partir de ahí puedes parsear el resultado por ejemplo con Split: Código
Bueno, esa sería la idea de usar comandos externos y recuperar su salida. Título: Re: Permisos acceso a clave de registro PC remoto Publicado por: jarpon en 23 Febrero 2022, 10:58 am Buenos dias EdePC
Muchas gracias por tu ayuda al final lo conseguí con tu ultima aportación. El problema era que yo utilizaba un usuario con credenciales de administrador, pero veo que debe ser si o si el usuario administrador activado como bien dijiste. Solo tuve que modificar esta linea, no se porque pero ejecutando desde windows funcionaba pero desde la plataforma de la maquina no. Set sh = WScript.CreateObject("WScript.Shell") por Set sh = CreateObject("WScript.Shell") Si quisiera añadir una clave seria con Reg Add correcto? También hice la prueba en local, pero Reg query no funciona, es normal? Otra vez mil gracias Un saludo Título: Re: Permisos acceso a clave de registro PC remoto Publicado por: EdePC en 23 Febrero 2022, 12:50 pm 1. El problema era que yo utilizaba un usuario con credenciales de administrador, pero veo que debe ser si o si el usuario administrador activado como bien dijiste. 2. Solo tuve que modificar esta linea, no se porque pero ejecutando desde windows funcionaba pero desde la plataforma de la maquina no. Set sh = WScript.CreateObject("WScript.Shell") por Set sh = CreateObject("WScript.Shell") 3. Si quisiera añadir una clave seria con Reg Add correcto? 4. También hice la prueba en local, pero Reg query no funciona, es normal? 1. Esto es debido al UAC (Control de Cuentas de Usuario) que se introdujo desde Windows Vista. Por defecto solo el usuario "Administrador" tiene permitido saltarse el UAC. Si quieres usar otro Usuario tienes que deshabilitar la UAC o configurar para que TODOS los usuarios con permisos de administrador puedan saltársela. 2. Depende del Intérprete que estés utilizando, Script.exe y WScript.exe (.vbs) tienen innato el objeto WSCript, pero si usas otro intérprete como mshta.exe (.hta .htm, etc) u otro, pues ellos tienen otro objeto o directamente usar CreateObject como lo has hecho. 3. Si, como puse en mi primer mensaje, solo que tienes que considerar escapar las comillas si las vas a necesitar. 4. El script que puse está hecho para PCs remotas con IP válidas porque así lo requiere Reg.exe y CmdKey.exe, aunque puedes poner la IP de tu PC local (no loopback) pero debes iniciar el servicio de registro remoto. Lo mejor sería usar: pc = "." de esa manera Reg entenderá que es tu propia PC local y no requerirá nada de permisos remotos, CmdKey dará un error interno oculto pero el script funcionará sin problemas. Título: Re: Permisos acceso a clave de registro PC remoto Publicado por: jarpon en 26 Febrero 2022, 07:19 am Muchos Gracias EdePC
Una última consulta. Cual seria la forma mas rapida de verificar la comunicación o pérdida de comunicación con el PC remoto?. Lo hago con un ping pero tarda 2 seg. Necesitaría algo mucho más rápido milisegundos Gracias Título: Re: Permisos acceso a clave de registro PC remoto Publicado por: jarpon en 27 Febrero 2022, 17:06 pm Otra pequeña consulta.
Cuando leo los registros van apareciendo pantallazos rápidos del reg.exe en cada lectura. Se podrían ocultar? Gracias |