Q&A

  • NT서비스 상태 체크 돼는게 있구 안돼는 것도 있네여...
안녕하세요.

제목 그대로 NT서비스 상태 체크를 해보려 하는데 어떤 것은 돼고

어떤 것은 안돼더라구요.

가령 NT서비스 중에 "Server"라는 항목은 현재 상태가 "시작" 돼어 있는데

체크를 해보면 죽어 있는 걸로 나오더라구요.

그런데 C++로 짠것은 똑같은 API함수를 썼는데 잘돼구요...

물론 제가 짠것은 아니고 어떤분이 제 델파이 소스를 보시고 똑같은 API함수를

썼다고 하더라구요.

물론 그분도 그런 현상이 나와서 API함수에서 받는 파라메타에 적정 메모리를

할당 해보니 잘 돼었다고 하길래 저역시 이것저것 해보았으나

역시 실패했습니다.

그래서 처음으로 이 곳 Q&A란에 글을 올리니 고수분들 보시고

꼭 답변 바랍니다.

아래는 NT서비스 상태 체크 소스 입니다.(델파이 팁에서 구함...)



★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★



function ServiceGetStatus(sMachine, sService: string ): DWord;

var

h_manager,h_svc: SC_Handle;

service_status : TServiceStatus;

hStat : DWord;

begin

hStat := 1;//죽어있을 경우

h_manager := OpenSCManager(PChar(sMachine) ,Nil, SC_MANAGER_CONNECT);



if h_manager > 0 then

begin

h_svc := OpenService(h_manager,PChar(sService), SERVICE_QUERY_STATUS);



if h_svc > 0 then

begin

if(QueryServiceStatus(h_svc, service_status)) then

hStat := service_status.dwCurrentState;



CloseServiceHandle(h_svc);

end;

CloseServiceHandle(h_manager);

end;



Result := hStat;

end;



★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★



0  COMMENTS