Principales respuestas
Establecer valor en clave de registro dependiendo del usuario que inicie sesión

Pregunta
-
Hola a todos:
Necesito modificar el valor de la siguiente clave del registro en los equipos pertenecientes al dominio:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Usbstor
valor Start (toma el valor 3 o 4).
¿Es posible darle a dicha clave un valor u otro dependiendo del usuario del dominio que inicie sesión?
¿Cómo seria es script para hacerlo si fuese posible?
Gracias por vuestro tiempo
Respuestas
-
No, como te he explicado en el segundo párrafo de mi anterior mensaje, estás accediendo al registro usando el objeto wshShell creado por un usuario no administrador; al intentar escribir en HKLM no te deja. Esto te va a pasar con cualquier forma en la que quieras escribir en HKLM con un usario normal, sea con REG.EXE, con el objeto wshShell, con WMI, con PowerShel... Da lo mismo, el problema sigue siempre siendo el mismo, que no se puede escribir en HKLM si no se es administrador. El primer script te funcionaría si fuese lanzado desde otro con RunAs. Imagina que al primero le llamas registro.vbs; le tendrías que llamar desde otro script como el segundo, cambiando lo que ejecuta el método Run de wshShell:
Option explicit Dim oShell set oShell= Wscript.CreateObject("WScript.Shell") oShell.Run "runas /noprofile /user:adminris@ris.rew ""cscript //nologo registro.vbs""" WScript.Sleep 500 oShell.Sendkeys "Enero2010~" Wscript.Quit
Un saludo
Fernando Reyes [MS MVP]
MCSA 2000/2003
MCSE 2000/2003
MCITP EnterpriseAdministrator
Web: http://freyes.svetlian.com
Blog: http://urpiano.wordpress.com
RSS: http://urpiano.wordpress.com/feed/
freyes.champú@champú.mvps.org
(Aclárate la cabeza si quieres escribirme)- Marcado como respuesta Atilla ArrudaModerator lunes, 1 de marzo de 2010 16:59
-
¿A qué script te refieres?
Probablemente otra aplicación es la que tiene el foco, no la ventana de comandos, de ahí que se pierda la contraseña; mira si este otro ejemplo, que usa AppActivate para asegurarse que es la ventana de comandos la que tiene el foco, te funciona:
how can I enter the 'runas' password automaticaly?
http://www.tek-tips.com/faqs.cfm?fid=2760
Un saludo
Fernando Reyes [MS MVP]
MCSA 2000/2003
MCSE 2000/2003
MCITP EnterpriseAdministrator
Web: http://freyes.svetlian.com
Blog: http://urpiano.wordpress.com
RSS: http://urpiano.wordpress.com/feed/
freyes.champú@champú.mvps.org
(Aclárate la cabeza si quieres escribirme)- Marcado como respuesta Atilla ArrudaModerator lunes, 1 de marzo de 2010 16:59
-
Era problema del foco, sí señor. Ya va todo sobre ruedas (de momento jejejej), espero no encontrarme con más dificultades.
Muchísimas gracias, sin su ayuda no hubiera podido hacer nada.
Un abrazo.
Javier- Marcado como respuesta Atilla ArrudaModerator lunes, 1 de marzo de 2010 16:59
Todas las respuestas
-
Crea diferentes Unidades ORganizativas dependiendo de los usuarios que quieras aplicar una u otra configuración. Despues en dichas UO aplica GPO´s que incluyan en el "Logon Script" un fichero .reg con las claves del registro que pretendas modificar.
Un saludo.
bep -
No puedes cambiar el tipo de sintaxis de una clave. Si espera un valor numérico, no le puedes un grupo de caracteres.
Guillermo Delprato - MVP-MCT-MCITP-MCTS-MCSE MCITP: Server Administration MCTS:Active Directory/Network Infrastructure Buenos Aires, Argentina -
Alfredo, un "logon script" se ejecuta con la cuenta del usuario, y por lo tanto no puede escribir en HKLM
Se podría llegar a hacer con un script de inicio de máquina, pero no va a ir en este caso por lo que comento en post de más arriba.
Guillermo Delprato - MVP-MCT-MCITP-MCTS-MCSE MCITP: Server Administration MCTS:Active Directory/Network Infrastructure Buenos Aires, Argentina -
Tiene un problema, y es que al tratarse de una clave de HKLM, es necesario que el usuario sea administrador del equipo para que pueda hacer algo más que leer. Eso te obligaría a ejecutar con algún mecanismo de RunAs, la importación de los ficheros REG. Así que sería necesario que utilizases VbScript o PowerShell para acceder al registro y modificar la clave, mediante, por ejemplo, el uso de REG.EXE. Lo malo de esto es que necesitas que en el script aparezca la contraseña del usuario administrador local con el que ejecutarás ese REG. Puedes encriptar el VbScript, si bien alguien un poco ducho lo desencriptará. Por eso Powershell sería una buena opción., pues te permite almacenar la contraseña en un fichero cifrado y luego usarlo en el script para que así nadie pueda ver esa contraseña. Lo malo es que no tienes garantías de tener PowerShell en los equipos que no sean Windows 7 o Windows Server 2008 R2, por lo que la forma más apropiada debería ser VbScript. Algunos enlaces:
http://xinn.org/RunasVBS.html
http://urpiano.wordpress.com/2006/12/07/encriptacion-de-scripts-vbscript-screncexe/
Un saludo
Fernando Reyes [MS MVP]
MCSA 2000/2003
MCSE 2000/2003
MCITP EnterpriseAdministrator
Web: http://freyes.svetlian.com
Blog: http://urpiano.wordpress.com
RSS: http://urpiano.wordpress.com/feed/
freyes.champú@champú.mvps.org
(Aclárate la cabeza si quieres escribirme) -
-
Se me olvidó poner estos dos enlaces:
http://freyes.svetlian.com/registro/registro.htm
http://freyes.svetlian.com/powershell-registro.htm
Un saludo
Fernando Reyes [MS MVP]
MCSA 2000/2003
MCSE 2000/2003
MCITP EnterpriseAdministrator
Web: http://freyes.svetlian.com
Blog: http://urpiano.wordpress.com
RSS: http://urpiano.wordpress.com/feed/
freyes.champú@champú.mvps.org
(Aclárate la cabeza si quieres escribirme) -
-
¿Es correcto este ejemplo?
Option explicit
Dim oShell
set oShell= Wscript.CreateObject("WScript.Shell")
oShell.Run "RunAs /noprofile /user:Javi ""regedit /s\\vmware-r8763id7.cit-rew32.net\usb\usb.reg"""
WScript.Sleep 100
oShell.Sendkeys "Septiembre09~"
Wscript.Quit -
Pruébalo, tiene buena pinta. No obstante deberías al menos cifrarlo con screncexe
Un saludo
Fernando Reyes [MS MVP]
MCSA 2000/2003
MCSE 2000/2003
MCITP EnterpriseAdministrator
Web: http://freyes.svetlian.com
Blog: http://urpiano.wordpress.com
RSS: http://urpiano.wordpress.com/feed/
freyes.champú@champú.mvps.org
(Aclárate la cabeza si quieres escribirme) -
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")WSHShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR\Start",4 ,"REG_DWORD"
Set WSHShell = nothing---------------------------------------------------------------------------------------------------------------------------------------
Option explicit
Estoy probando estos dos scripts:
Dim oShell
set oShell= Wscript.CreateObject("WScript.Shell")
oShell.Run "runas /noprofile /user:adminris@ris.rew ""REG ADD HKLM\SYSTEM\CurrentControlSet\Services\USBSTOR /v Start /t REG_DWORD /d 4 /f"""
WScript.Sleep 500
oShell.Sendkeys "Enero2010~"
Wscript.Quit
el primero funciona perfectamente cuando lo ejecuto como administrador, pero no se como ponerlo para que funcione con RUNas para que se ejecute por el resto de los usuarios cuando inicien sesión.
El segundo también funciona pero no se por qué de vez en cuando me pide la contraseña de administrador al inicar sesión los usuarios.
Una vez más, necesito vuestra ayuda.
Gracias por vuestro tiempo
Javier. -
Quizás es porque haces el sleep demasiado corto. Ten en cuenta que se están mandando pulsaciones de teclado (método SendKeys) que son recibidas por la ventana de comandos que se abre con el método Run; Sleep recibe el tiempo en milisegundos, con lo que le estás dando medio segundo; debería ser bastante, pero a lo mejor es insuficiente en un inicio de sesión. Prueba con un valor alto, digamos 5 ó 10 segundos (5000 ó 10000) y si funciona, ve rebajando el valor hasta que encuentres el menor que no falle.
El primero, efectivamente, te funciona como administrador, pero no como usuario normal porque el problema sigue siendo el mismo: escribir en HKLM. Da igual que lo hagas con REG.EXE, con el método RegWrite de el objeto wshShell o con cualquier manera en la que intentes escribir en HKLM con un usuario normal, no funcionará. Existe otra forma de escribir en el registro, que es vía WMI, lo cual es una ventaja porque se pueden pasar credenciales alternativas, es decir, que puedes escribir sin usar RunAs en HKLM desde el script independientemente de quién lance el script ¡¡¡Fabuloso!!! No te emociones..., por desgracia las credenciales alternativas al contactar con el servicio WMI sólo se pueden pasar a equipos remotos, en el equipo local tan sólo se puede conectar con WMI con el usuario que lance el script, por lo que sería necesario, al igual que con RegWrite del objeto wshShell, crear un script que realizara la escritura y que ese script fuese lanzado desde otro script invocando RunAs.
Un saludo
Fernando Reyes [MS MVP]
MCSA 2000/2003
MCSE 2000/2003
MCITP EnterpriseAdministrator
Web: http://freyes.svetlian.com
Blog: http://urpiano.wordpress.com
RSS: http://urpiano.wordpress.com/feed/
freyes.champú@champú.mvps.org
(Aclárate la cabeza si quieres escribirme) -
-
No, como te he explicado en el segundo párrafo de mi anterior mensaje, estás accediendo al registro usando el objeto wshShell creado por un usuario no administrador; al intentar escribir en HKLM no te deja. Esto te va a pasar con cualquier forma en la que quieras escribir en HKLM con un usario normal, sea con REG.EXE, con el objeto wshShell, con WMI, con PowerShel... Da lo mismo, el problema sigue siempre siendo el mismo, que no se puede escribir en HKLM si no se es administrador. El primer script te funcionaría si fuese lanzado desde otro con RunAs. Imagina que al primero le llamas registro.vbs; le tendrías que llamar desde otro script como el segundo, cambiando lo que ejecuta el método Run de wshShell:
Option explicit Dim oShell set oShell= Wscript.CreateObject("WScript.Shell") oShell.Run "runas /noprofile /user:adminris@ris.rew ""cscript //nologo registro.vbs""" WScript.Sleep 500 oShell.Sendkeys "Enero2010~" Wscript.Quit
Un saludo
Fernando Reyes [MS MVP]
MCSA 2000/2003
MCSE 2000/2003
MCITP EnterpriseAdministrator
Web: http://freyes.svetlian.com
Blog: http://urpiano.wordpress.com
RSS: http://urpiano.wordpress.com/feed/
freyes.champú@champú.mvps.org
(Aclárate la cabeza si quieres escribirme)- Marcado como respuesta Atilla ArrudaModerator lunes, 1 de marzo de 2010 16:59
-
-
Hola a todos de nuevo (espero no ser muy pesado, aunque me da que si ;) ). Voy a intentar concretar porque me voy a volver medio majareta( jejejeje)
Option explicit
Dim oShell
set oShell= Wscript.CreateObject("WScript.Shell")
oShell.Run "runas /noprofile /user:adminris@ris.rew ""REG ADD HKLM\SYSTEM\CurrentControlSet\Services\USBSTOR /v Start /t REG_DWORD /d 4 /f"""
WScript.Sleep 2000
oShell.Sendkeys "Enero2010~"
Wscript.Quit
Este script, sin ser usuario administrador, me cambia la clave del registro con lo cual sí funciona usando RUNas. Peeero me da un problema. El problema es que me sale la ventanita de la línea de comandos pidiendo la contraseña del usuario administrador, y una vez que la introduzco realiza las operaciones sin problemas.
A mi entender(el cual no es mucho en el campo de VBS) si ya con el SendKeys le estoy enviando la clave de administrador, no debería pedírmela, ¿no?
Ya he probado aumentando el Sleep, pero nada. He probado el script del Sr. Fernando Reyes pero no me realiza ningún cambio en el registro.
Asi que una vez más, espero vuestros consejos e ideas.
Gracias.
Javier -
¿A qué script te refieres?
Probablemente otra aplicación es la que tiene el foco, no la ventana de comandos, de ahí que se pierda la contraseña; mira si este otro ejemplo, que usa AppActivate para asegurarse que es la ventana de comandos la que tiene el foco, te funciona:
how can I enter the 'runas' password automaticaly?
http://www.tek-tips.com/faqs.cfm?fid=2760
Un saludo
Fernando Reyes [MS MVP]
MCSA 2000/2003
MCSE 2000/2003
MCITP EnterpriseAdministrator
Web: http://freyes.svetlian.com
Blog: http://urpiano.wordpress.com
RSS: http://urpiano.wordpress.com/feed/
freyes.champú@champú.mvps.org
(Aclárate la cabeza si quieres escribirme)- Marcado como respuesta Atilla ArrudaModerator lunes, 1 de marzo de 2010 16:59
-
Era problema del foco, sí señor. Ya va todo sobre ruedas (de momento jejejej), espero no encontrarme con más dificultades.
Muchísimas gracias, sin su ayuda no hubiera podido hacer nada.
Un abrazo.
Javier- Marcado como respuesta Atilla ArrudaModerator lunes, 1 de marzo de 2010 16:59
-
Me alegra haberte sido de ayuda.
Un saludo
Fernando Reyes [MS MVP]
MCSA 2000/2003
MCSE 2000/2003
MCITP EnterpriseAdministrator
Web: http://freyes.svetlian.com
Blog: http://urpiano.wordpress.com
RSS: http://urpiano.wordpress.com/feed/
freyes.champú@champú.mvps.org
(Aclárate la cabeza si quieres escribirme) -