2011-05-08 4 views
2

서비스가 계속해서 일부 응용 프로그램을 검사하고 닫히지 않았 음을 확인하는 서비스가 있습니다. 이 앱을 닫으면 서비스가 다시 시작합니다.해당 세션을 캡처하는 방법 Windows 서비스에서 시작된 로그 오프

사용자가 세션에서 로그 오프하기로 결정하면 문제가 발생합니다. 로그 오프하는 동안 모든 응용 프로그램은 광산을 포함하여 닫힙니다. 그러나 서비스는 여전히 실행 중이며 끊임없이 다시 시작하려고합니다.

사용자가 로그 오프하고 응용 프로그램을 더 이상 다시 시작할 필요가 없음을 서비스에 알리는 방법은 무엇입니까? SERVICE_CONTROL_SESSIONCHANGE 알림을 사용하여 알림을 만들려고했습니다. 그러나 MSDN에 따르면 그들은 모든 응용 프로그램이 이미 닫히고 프로 시저가 로그 오프 될 때 서비스를 시작합니다. 나에게는 너무 늦었다. 프로그래밍 방식으로 현재 세션이 로그 오프하는 중임을 알 수있는 방법이 있습니까?

내 서비스가 LocalSystem 계정으로 시작되었습니다.

감사합니다.

p.s. 응용 프로그램 소스 코드에 액세스 할 권한이 없습니다. 목표는 수정하지 않고 성취해야합니다.

+0

왜 앱을 (적어도 항상 실행해야하는 부분) 서비스로 만들지 않습니까? –

+0

"내 앱"은 끊임없이 실행해야하는 애플리케이션입니다. 그러나 그것은 나에 의해 쓰여지지 않습니다. –

답변

2

두 가지 응용 프로그램을 실행하십시오. 하나는 감시 대상이고 다른 하나는 사용자가 구현하는 응용 프로그램입니다. 이 두 번째 메시지는 서비스에 메시지를 보내어 로그 오프 이벤트에 응답 할 수 있으며 (David Heffernan의 대답) 서비스는 감시 된 작업을 다시 시작하지 않는 것을 알게됩니다.

+0

감사합니다. 이 솔루션에 대해 생각하고 있었지만 "깔끔한"것으로 보이지 않습니다. 불필요한 응용 프로그램이 계속 실행되는 것을 피하는 것이 좋습니다. –

+0

+1 좋은 실용적인 솔루션 –

+0

@vkjr 만약 앱을 제어 할 수 없다면 어색함을 받아 들일 필요가 있습니다. –

0

앱과 서비스 사이의 통신 채널을 열고 로그 오프 이벤트로 인해 앱이 서비스를 종료하고 있음을 앱이 알려주도록 정렬합니다.

+0

제안 해 주셔서 감사합니다. 불행히도이 방법은 사용자가 애플리케이션 작성자 인 경우에만 작동합니다. 제 경우에는 제 3자인 앱을 계속 실행해야합니다. –

+0

이것은 정말 특별한 앱이어야합니다! 이게 뭐야? srvany와 같은 서비스로 전환 할 수 있습니까? –

+0

이 응용 프로그램에 대한 액세스 권한이 없습니다 :) 고객이 notepad.exe 대신에 notepad.exe를 사용하여 서비스를 테스트하고 있으므로 고객이 제공하지 않았습니다. 다른 방법이 없다면 서비스 만 사용하여 문제를 해결하는 것이 더 좋을 것입니다. 기능. –

0

당신은 실행의 소스 코드에 액세스 할 수 없습니다,하지만 당신이 과정에 영향을 미칠 수 없다는 것을 의미하는 것은 아니다. 예를 들어, inject a DLL 수 있습니다. SetWindowsHookEx을 사용하면 WM_ENDSESSION이 앱 기본 창으로 전송됩니다.

0

앱을 실행하는 사용자로 서비스를 만들고 자동으로 시작하도록 알려주는 이유는 무엇입니까? 이 경우 서비스가 종료되므로 사용자가 로그 오프 할 때 SERVICE_CONTROL_SHUTDOWN 메시지를 받아야합니다.

+0

시스템이 로그 오프하면 서비스가 SERVICE_CONTROL_SHUTDOWN을 수신하지 않습니다.닥쳐야 만. –

+0

나는 사용자가 로그온 할 때 서비스가 시작되고 사용자가 로그 오프 할 때 SERVICE_CONTROL_STOP을 얻고 그 후에 SHUTDOWN 명령을 받으면 서비스가 중단된다고 생각했다. 적어도 필자가 수동으로 서비스를 중지 할 때 경험했던 것입니다. 사용 사례가 로그 오프를 지원하지 않기 때문에 로그 오프를 시도하지 않았습니다. – RedX

+0

SERVICE_CONTROL_STOP 만받은 경험이 있지만 어쨌든 너무 늦은 순간에 이미 마감 된 응용 프로그램입니다. 그래서 저는 존 조윈크가 언급 한 방법을 진행할 것입니다. –

관련 문제