0

누군가 내 서버에 로그온하면 자동으로 일부 작업을 수행해야하는 프로그램을 작성하고 싶습니다. 이에 대한Windows 2003/2008 사용자 로그인을 모니터링하는 방법은 무엇입니까?

내 질문은 :

  • 1) 내가 내 목적/모니터를 사용할 수 있습니다 사용자가 로그인 한 후 바로 설정되어 있는지 마지막 로그인 기록이 있습니까? 그렇지 않다면 비슷한 것을 사용할 수 있습니까?

  • 2) 지속적으로 가장 좋은 방법은 입니다. 이러한 값을 모니터링 하시겠습니까?

+1

관리 작업은 모든 관리자가 수행해야합니다. 물어보십시오. – leppie

답변

5

가장 안전한 방법은 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 페이지에 게시 된 예제를 읽는 것이 좋습니다. 그들은 매우 유용합니다.

행운을 빈다.

0

로그인 스크립트를 배포하지 않는 이유는 무엇입니까? 번거 로움을 덜어줍니다.

+1

대답이 아닙니다 (의견이 있어야합니다). 어쨌든 확실한 대답은 로그인 스크립트가 로그인 한 사용자의 권한으로 실행되기 때문입니다. – MSalters

+0

스크립트는 서버에 대해 무언가를 트리거 할 수 있습니다. 또한 다른 컴퓨터에서 원격으로 작업을 실행할 수있는 쉬운 옵션을 제공합니다. – kichik

관련 문제