2011-02-01 19 views
7

Tengo un servicio/aplicación que recibe notificaciones de cambios de sesión de Windows. He notado una diferencia en el comportamiento entre Windows XP y Windows 7 y estoy tratando de establecer si se trata de un error o un cambio de comportamiento documentado.Diferencia en eventos de notificación de cierre de sesión entre Windows XP y Windows 7

Las notificaciones vienen como: WTSSESSION_NOTIFICATION.

Windows XP informa como se esperaba: WTS_SESSION_LOGON en el inicio de sesión de la GUI de Windows y: WTS_SESSION_LOGOFF en la salida de la GUI de Windows.

En Windows 7 x64 en la interfaz de usuario, se genera WTS_SESSION_LOGON, pero al cerrar sesión obtengo un evento WTS_CONSOLE_DISCONNECT en lugar del evento WTS_SESSION_LOGOFF.

¿Es esto un error o tienen los valores constantes cambiados entre versiones? No es enormemente crítico para el servicio que he desarrollado, pero aún me gustaría saber por qué esto se comporta de manera diferente.

+4

evento WTS_CONSOLE_DISCONNECT en lugar de WTS_CONSOLE_DISCONNECT? –

+0

Los valores constantes no cambiaron, WTS_CONSOLE_DISCONNECT se definió para XP (de acuerdo con una búsqueda rápida en Google). Es el evento LOGOFF totalmente perdido? ¿Tal vez Win7 simplemente desconecta la sesión antes de cerrar sesión? – Zarat

+0

¿Está utilizando 'WTSRegisterSessionNotification' o' RegisterServiceCtrlHandlerEx'? Debido al aislamiento de la sesión, no esperaría que el primero trabaje para un servicio en Vista o Windows 7. –

Respuesta

1

Solo los servicios pueden recibir el evento WTS_SESSION_LOGOFF en Windows 7. Cuando el servicio recibe la notificación finaliza el procedimiento de cierre de sesión (por lo que todas las aplicaciones que el usuario estaba ejecutando ya han sido eliminadas).

+0

Re: (evento WTS_CONSOLE_DISCONNECT en lugar de WTS_CONSOLE_DISCONNECT?) Eso fue un error y he editado la pregunta para que esté redactado correctamente ahora. –

+0

El código en cuestión es en realidad un servicio. Se supone que debe ejecutarse independientemente de cualquier sesión de inicio de sesión determinada y, de hecho, se supone que debe hacer un seguimiento de quién inicia y cierra sesión para compilar y registrar la actividad. Como este es el primer servicio nativo que he escrito, podría haber hecho algo incorrecto con respecto a su comportamiento, si solo comienza durante una sesión de inicio de sesión, entonces está funcionando mal. Lo que encuentro extraño es que solo Windows 7 da el evento de desconexión de la consola en lugar del cierre de la sesión. Windows Vista ofrece un cierre de sesión como XP, lo encuentro más sorprendente. –

+0

Como todo lo que este servicio necesita hacer es rastrear que alguien haya ingresado y cerrado sesión. El hecho de que un evento diferente del esperado sea despedido es más una molestia que otra cosa. Como no puedo encontrar ninguna documentación que indique que se supone que el comportamiento ha cambiado, no sé si se trata simplemente de un error en Windows 7. Antes de contactar a Microsoft sobre esto, quería verificar si esto realmente es un error. error o al menos un cambio de comportamiento no documentado antes de contactar a Microsoft para evitar que parezca tonto (o al menos más de lo habitual). –

Cuestiones relacionadas