Pregunta

Con Windows 2003, busco una forma de crear un " script de cierre de sesión " eso continuará con el cierre de sesión actual e inmediatamente iniciará sesión en otro usuario. Entonces, & Quot; UsuarioA & Quot; se desconecta. La secuencia de comandos se dispara para iniciar sesión & Quot; UsuarioB & Quot ;.

Esto es parte de una actualización de la aplicación para una computadora donde hemos escrito el 'shell'; similar a una aplicación de quiosco. Para la actualización, debemos iniciar sesión como 'Adminstrator' y luego, cuando la actualización se haya completado, cierre la sesión 'Administrador' e inicie sesión como 'sample_user'. Nos gustaría lograr esto SIN reiniciar.

Nota, no quiero un script que inicie el cierre de sesión (es decir, " shutdown "). Estoy buscando un script que se ejecutará en el registro del usuario apagado (establecido a través de Políticas de grupo) Como se indicó anteriormente, el script debe iniciar sesión en un usuario diferente.

Gracias.

¿Fue útil?

Solución

No piense que es posible de la manera indicada (secuencia de comandos al cerrar sesión).

Tendría que configurar la máquina para que inicie sesión automáticamente como una cuenta especificada y luego cierre sesión (haciendo que inicie sesión automáticamente para usted) y luego tendría que deshabilitar esa característica nuevamente, colocando un script de inicio de sesión temporal ... generalmente suena desordenado.

La configuración real se puede hacer usando herramientas como Microsofts Shared Computer Toolkit o similar (no estoy tan seguro de cómo se comporta el inicio de sesión automático del registro " normal " al cerrar sesión manualmente, pero he tenido un XP quiosco que se iniciaría automáticamente al instante, incluso si se desconectaba manualmente; tenía que anularlo usando alguna tecla como shift + logoff para poder especificar manualmente el inicio de sesión nuevamente, de modo que de alguna manera se puede hacer).

El " más fácil " podría ser reemplazar msgina.dll con alguien de su propia creación ...

Pero ¿por qué haces esto? Simplemente use runas y comience lo que necesite hacer como ese otro usuario sin cerrar la sesión del usuario de la consola: ¿es un sistema multiusuario después de todo? El escritorio es simplemente peludo ^^

( De todos modos, esto requerirá que las credenciales de usuario estén disponibles para su script, lo que lo hace redundante a medida que compromete la seguridad de esa cuenta, desafiando el propósito de tener esa segunda cuenta en primer lugar, para ¿Para qué existe? )

Otros consejos

Intentaría configurar el registro para iniciar sesión automáticamente con el usuario que desee, y luego simplemente cerrar sesión en el usuario administrador. Eso debería volver a iniciar sesión en su usuario de kiosco.

No estoy seguro de cómo iniciar sesión en otro usuario una vez que el usuario actual cierra la sesión (no estoy seguro de si Windows le permitirá ...)

Pero puede usar el apagado para cerrar sesión:

shutdown /?

Aquí hay algunas ideas que probablemente caigan en el " truco barato " categoría:

¿Qué tal iniciar sesión en UserB en primer lugar y luego usar runas /user:userA <cmd> para ejecutar la primera parte del proceso de instalación?

Si eso es inaceptable, sé que hay una manera de hacer que las estaciones de trabajo de Windows (aquellas que no forman parte de un Dominio) inicien sesión automáticamente en una determinada cuenta de usuario después de un reinicio. Tal vez si observa qué cambios en el Registro ocurren y los duplica, un reinicio iniciará sesión automáticamente en ese usuario. (Por supuesto, como etapa final, después de que el usuario B inicie sesión, deberá revertir esos cambios :-)

También se me ocurre preguntarme si tal vez hay una manera para que un servicio fuerce una " pantalla de inicio de sesión " para iniciar sesión como un determinado usuario. Tal vez usando algún método como la forma en que el Escritorio remoto lo hace de forma remota ... Si eso es posible, entonces podría crear un servicio que instale antes de cerrar la sesión del usuario A, que desencadenaría el inicio de sesión del usuario B.

Puede escribirlo con VNC (hay muchas versiones gratuitas, elija). Configure un proceso de servidor VNC en la máquina para escuchar en localhost. Cuando el usuario cierra la sesión, su secuencia de comandos de cierre de sesión se conectará a la máquina mediante VNC y enviará las pulsaciones de teclas necesarias para iniciar sesión en el siguiente usuario. VNC usa el protocolo RFB (framebuffer remoto); existen bibliotecas para los idiomas más populares, por lo que debería poder hacer que algo funcione rápidamente. O hay herramientas relacionadas que podría ayudar.

Si tuviera que ejecutar algo como esto como un script normal en un idioma determinado, lo más probable es que no funcione como cuando cierra la sesión de su cuenta, todos los procesos deberían eliminarse junto con su script en ejecución.

Es posible que pueda crear algún tipo de 'servicio' que se ejecute en una cuenta de servicio (es decir, siempre activa) que automáticamente haga que este usuario cambie por usted.

Mis apuestas están en Windows Powershell, aunque no estoy completamente seguro de qué funcionalidad tiene en lo que respecta a la creación de un servicio.

Una búsqueda rápida muestra lo siguiente (el segundo enlace es a un foro pero menciona la ejecución de Powershell como un servicio y el envío a ese servicio de un parámetro que sería la ruta a su secuencia de comandos de cambio de usuario)

Cómo crear un servicio de Windows utilizando Powershel

Powershell Script como un servicio de Windows

No tengo un servidor Windows 2003 o un sistema con & "; Políticas de grupo &"; configuró para probar mi presentimiento, pero podría echar un vistazo a SU (" cambiar usuario ") para Windows. Originalmente parte del Kit de herramientas de recursos, esto se ha extendido a un nuevo SUperior SU . Publique los resultados / script si esto funciona.

Puede abordar esto desde la perspectiva de construir una utilidad de control remoto (como VNC, etc.). Lo importante aquí es que si desea acceder a la parte de la pantalla de inicio de sesión (es decir, la parte CTRL + ALT + SUPR / nombre de usuario / contraseña), lo único importante es que un servicio de Windows es el único componente que puede acceder a esto, por lo que tener que crear uno.

El único problema que veo con esta técnica en su conjunto es que incluso si gastaste un gran esfuerzo para que funcione (y sería un esfuerzo bastante grande), las posibilidades de que esto funcione con éxito con todo procedentes de un script de cierre de sesión (es decir, cuando las cosas se están cerrando) son bajas, incluso debido a la cantidad de cosas que pueden salir mal al volver a iniciar sesión como Administrador.

Solo recuerde que para cualquier cosa que necesite ejecutar como Administrador, hay formas más fáciles en Windows de hacer que eso suceda (como Ejecutar como, cambiar los permisos de usuario sobre los elementos que necesitan actualizar, etc.).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top