¿El script para finalizar el proceso al cerrar sesión no se ejecuta hasta que el proceso finaliza?

¿El script para finalizar el proceso al cerrar sesión no se ejecuta hasta que el proceso finaliza?

Tenemos un programa que, debido a pérdidas de memoria en algunas de las pantallas, no sale limpiamente cuando el usuario sale. El problema es que esto bloquea el procedimiento normal de cierre de sesión: selecciona cerrar sesión y algunos procesos desaparecen, pero el usuario en realidad no cierra sesión.

Como no puedo arreglar el programa, pensé en usar un script que se ejecuta al cerrar sesión para finalizar el proceso. Verifiqué que el script finaliza el proceso si lo ejecuto haciendo doble clic y agregué el script a Configuración de Windows -> Scripts -> Cerrar sesión en mi máquina en gpedit.

Desafortunadamente, parece que los scripts de cierre de sesión no se ejecutan hasta que todos los procesos hayan finalizado, por lo que nunca se ejecutan.

¿Hay alguna manera de hacer que los scripts de cierre de sesión se ejecuten en un punto anterior del proceso? ¿O existe un mejor enfoque para el problema?

Respuesta1

¿Ha probado la configuración del registro en HKEY_CURRENT_USER\Control Panel\Desktop AutoEndTasks establecida en 1? Si eso funciona, no necesitarás el script.

Respuesta2

Podrías usar un programa para cerrar sesión comohttp://www.karenware.com/powertools/ptstopper.aspque ejecuta scripts antes de cerrar la sesión.

Respuesta3

agrega esto al final de tu script

Set strComputer = "."

Set OpSysSet = GetObject("winmgmts:{(Shutdown)}//" & strComputer & "/root/cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true")

for each OpSys in OpSysSet
    OpSys.Win32Shutdown 0
next

WScript.Quit(0)

pídales que utilicen este script en lugar del cierre de sesión normal.

Actualmente no estoy seguro de cómo hacer que ejecute un script antes de que se cierren los procesos, pero puedo seguir investigando si esto no funciona. Además, no tuve la oportunidad de realizar la prueba, pero esa debería ser la sintaxis correcta para el comando. déjame saber si necesita algunos ajustes.

Respuesta4

Creo que es un poco gracioso que el problema que tienes es que el usuario nunca cierra la sesión por completo cuando cierra la sesión, por lo que escribes un script que dice "eliminar este proceso al cerrar la sesión", pero el script no se puede ejecutar porque el El usuario nunca cierra la sesión. Desea que la secuencia de comandos se inicie cuando el usuario presione "cerrar sesión", no cuando el usuario haya terminado de cerrar sesión.

No soy muy experto en VBScript ni siquiera en la API de Windows detrás del cierre de sesión, pero sugeriría una de las siguientes:

  • Descubra si hay un evento/activador separado que se genera cuando un usuario selecciona "Cerrar sesión" y haga que su script se active en ese momento. Si es más fácil decirlo que hacerlo, me disculpo, pero parece la forma más obvia de entender lo que realmente tenía en mente.

  • Descubra si hay un proceso que se cierra definitivamente después de que el usuario elige Cerrar sesión ( explorer.exe¿quizás?). Esto solo sería una buena idea si el proceso que está intentando eliminar no es crítico para el sistema o para la sesión (o si el proceso al que vincula su script de eliminación es crítico para el sistema), ya que no desea que el script finalice. el proceso simplemente porque el usuario cerró algo en la bandeja.

  • Creo que la idea de tener un script para cerrar sesión es bastante buena, pero sugeriría averiguar si realmente se puede reemplazar el botón "cerrar sesión" en el menú de inicio con un botón que inicie este script. Sé que he visto algo similar en los laboratorios de computación. Pero si confía en que los usuarios recuerden hacer clic en el botón personalizado de "cerrar sesión" en el escritorio, y aún pueden acceder al cierre de sesión normal, esa memoria muscular solo hará que todos se sientan frustrados.

información relacionada