Q&A

  • 서비스 프로그램을 만들어보려고 합니다..
안녕하십니까..?

제가 만들려고 하는 프로그램은.. 서비스 프로그램인데요..
그러니까 어떠한 프로그램을 감시하는 겁니다.. 사용자가 이 프로그램을 종료하면(정확히는 트레이아이콘에 있는) 다시 실행시켜주는 서비스 프로드램입니다..

이쪽으로는 처음 해보는지라..^^;;

여기저기 검색을 해본결과 서비스 프로그램에서 다른 어플을 실행하면 잘안된다는 얘기를 들었습니다..
권한 문제 때문에 폼이 보이지 않는다던가 아니면 종ㄽ가 안된다던가.. 이러한 문제가 있다고 하는데..

이와같은 기능을 구현하는데 도움이될만한 조언 부탁드립니다..
혹시 참고할 만항 소스가 있는곳을 알고 있다면 아울러 알려주시면 고맙겠습니다..

감사합니다..
2  COMMENTS
  • Profile
    권상득 2008.05.10 16:35
    방법은 여러가지가 있겠으나 제가 생각하고 구현한 방법은 2가지가 있습니다.

    1. 주기적으로 프로세스 리스트를 살펴보고 없으면 재기동 한다.
        너무 쉬운방법 이군요. ㅋㅋ 가장 일반적인 방법이라 생각됩니다.

    2. 감시대상 프로그램이 종료되는 이벤트에 감시프로그램으로 메세지를 전달한다.
        감시 프로그램인 전달된 메세지를 분석하여 재기동한다.
        양쪽 프로그램을 모두 수정해야 하고, 예기치 않은 종료에는 대응되지 않을수 있습니다.

    이런거 말고 더 좋은 방법이 있으면 추천해줘요. ㅎㅎ
  • Profile
    공호준 2008.05.13 18:47


    일반 어플리케이션을 서비스로 등록하기.
    델코에서 받았는데요. 참조하시길바랍니다.

    일반 어플리케이션을 서비스로 만들어두면 오류시 재시동 등을 OS가 알아서 해주는 등 많은 장점이 있습니다. 이 짧은 글에서는 서비스로 만들 것을 고려하지 않은 어플리케이션을 서비스로 등록하는 방법에 대해 정리해 봅니다.

    먼저 instsrv.exe 와 srvany.exe 두 개의 파일이 필요합니다. 이 파일들은 윈도 리소스킷에 들어있으니 다음 위치에서 다운받아 설치하세요.

    http://www.microsoft.com/downloads

    http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displaylang=en

    또는 여기를 클릭해 내려받고 C:\SrvAny 폴더를 만들어 넣어둡니다.

    리소스킷을 설치했다면 커맨드창에서 다음과 같이 실행 해 주고

    instsrv "MapServer" "C:\Program Files\Windows Resource Kits\Tools\srvany.exe"

    그냥 C:\SrvAny 폴더에 넣어두었다면 다음과 같이 실행 해 줍니다.

    instsrv "MapServer" "C:\SrvAny\srvany.exe"

    레지스트리 편집기에 들어가 방금 설치한 서비스 항목을 찾아봅시다.

    regedt32
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MapServer

    마우스 우측키를 눌러 새 '키'를 등록하고 이름을 'Parameters'라 합니다.
    이 키 안에 문자열 값을 추가하고 이름을 'Application' 이라고 합니다.

    여기에 서비스로 등록할 게임 서버 프로그램의 경로를 적어 주세요.

    만약 커맨드라인 파라미터가 필요하다면 'AppParameters' 문자열 값을 추가하고
    적어주면 됩니다.

    이제 서비스 관리도구에 들어가 MapServer 서비스를 찾아 구동시키세요.