가장 안전한 방법은 SERVICE_CONTROL_SESSIONCHANGE 컨트롤을 허용하는 서비스를 만드는 것입니다.
이렇게하면 서비스 제어 처리기가 사용자가 로그온하고 로그 오프하고 세션을 잠글 때마다 다양한 다양한 옵션을 제어 할 수 있습니다. 링크 타격에서 더 많은 정보를 찾으십시오.
이
은 다음과 같이 dwControlsAccepted에 SERVICE_ACCEPT_SESSIONCHANGE 플래그가 서비스를 생성하여 수행됩니다
SERVICE_STATUS ss;
...
ss.dwControlsAccepted |= SERVICE_ACCEPT_SESSIONCHANGE;
은 얹는 :
// This lets the service accept the session change ctrls
// The service handle here is received by calling RegisterServiceCtrlHandler
SetServiceStatus(hServiceHandle,
&ss);
이 창에 SERVICE_CONTROL_SESSIONCHANGE 컨트롤을 보낼 수있게됩니다 HandlerEx 함수는 다음과 같습니다.
DWORD WINAPI HandlerEx(DWORD dwControl,
DWORD dwEventType,
LPVOID lpEventData,
LPVOID lpContext)
{
switch (dwControl)
{
...// Regular control handling
case (SERVICE_CONTROL_SESSIONCHANGE):
switch(dwEventType)
{
case(WTS_SESSION_LOGON):
// Handle logon
break;
case(WTS_SESSION_LOCK):
// Handle lock
break;
...
}
break;
...
}
}
여기에서받을 수있는 모든 세션 변경 알림을 읽을 수 있습니다 : WM_WTSSESSION_CHANGE, 필요한 모든 알림은 설명의 wParam 부분에 있습니다.
글쎄, 어쨌든 그것의 요지 야. handlerex 함수에 대한 자세한 내용은 HandlerEx을 참조하고 일반적인 서비스에 대한 자세한 내용은 Service Functions을 참조하십시오. ServiceMain 함수, RegisterServiceCtrlHandler 함수를 읽고 가장 중요한 것은 MSDN 페이지에 게시 된 예제를 읽는 것이 좋습니다. 그들은 매우 유용합니다.
행운을 빈다.
관리 작업은 모든 관리자가 수행해야합니다. 물어보십시오. – leppie