none
Establecer valor en clave de registro dependiendo del usuario que inicie sesión RRS feed

  • 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
    lunes, 22 de febrero de 2010 7:42

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)
    miércoles, 24 de febrero de 2010 7:27
    Moderador
  • ¿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)
    miércoles, 24 de febrero de 2010 12:01
    Moderador
  • 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
    miércoles, 24 de febrero de 2010 18:08

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
    lunes, 22 de febrero de 2010 11:03
  • 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
    lunes, 22 de febrero de 2010 11:55
    Moderador
  • 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
    lunes, 22 de febrero de 2010 11:57
    Moderador
  • 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)
    lunes, 22 de febrero de 2010 12:34
    Moderador
  • Grácias por vuestras ideas, a ver si consigo hacer algo.
    Un saludo
    lunes, 22 de febrero de 2010 12:38
  • 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)
    lunes, 22 de febrero de 2010 12:43
    Moderador
  • Como bien comenta Fernando esa clave se puede añadir usando un Run as y restringiendo al maximo y securizando la utilizacion del user que lance el script de inicio.
    bep
    lunes, 22 de febrero de 2010 12:43
  • ¿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
    lunes, 22 de febrero de 2010 18:27
  • 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)
    martes, 23 de febrero de 2010 14:01
    Moderador
  • 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
    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

    Estoy probando estos dos scripts:
    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.
    martes, 23 de febrero de 2010 14:40
  • 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)
    martes, 23 de febrero de 2010 15:20
    Moderador
  • Pero el segundo script si me escribe en el registro usando RUNas con los usuarios normales, asi que el primer script también debería hacerlo, no?
    martes, 23 de febrero de 2010 16:46
  • 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)
    miércoles, 24 de febrero de 2010 7:27
    Moderador
  • Voy a seguir probando. Ya les contaré.
    Muchas gracias por su ayuda, y por su tiempo.

    Javier

    miércoles, 24 de febrero de 2010 9:09
  • 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

    miércoles, 24 de febrero de 2010 11:27
  • ¿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)
    miércoles, 24 de febrero de 2010 12:01
    Moderador
  • 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
    miércoles, 24 de febrero de 2010 18:08
  • 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)
    jueves, 25 de febrero de 2010 7:32
    Moderador
  • Hola ,Al final cual fue la solucion que encontraste,yo tambien tengo algo similar,xfa apoyame
    sábado, 11 de febrero de 2012 17:44