Canstop이 False로 설정 될 때 Windows 서비스를 중지하는 방법 (C#)

StackOverflow https://stackoverflow.com/questions/149632

  •  02-07-2019
  •  | 
  •  

문제

좋아, 그래서 2 부 나는 전력 실험이 없습니다 이다:

요약 질문 -Windows 서비스에서 Canstop 속성을 동적으로 설정하는 방법이 있습니까?

전체 Spiel- 현재 프로세스를 확인하고 살해하는 서비스가 있습니다 (IE 게임). 엄청난. 나는 중독을 포기하면 서비스를 죽일 수 없도록 Canstop을 False로 설정했습니다. 비밀번호가 올바른 경우 서비스가 중지되는 비밀번호 확인 (다른 사람이 암호를 입력하는 사람)이있는 프로그램이 있습니다. (심각한 인출이있는 경우) 문제는 ServiceController 클래스를 사용하고 있습니다.

내가 알 수있는 한, ServiceController는 단지 데코레이터 (yah design patern 추측)이므로 실제 서비스를받을 방법이 없습니다. 첫 번째 시도는 속성 정보 였지만, 그것이 무의미한 것을 깨닫기에는 너무 멍청했습니다. 두 번째는 서비스를 "대표"하는 개인 필드가있을 수 있다고 생각했기 때문에 필드 정보였습니다. 당신이 추측 할 수 있듯이, 둘 다 실패했습니다.

어떤 아이디어?

편집 1구성 파일이나 레지스트리처럼 쉽게 얻을 수있는 어딘가에 CANSTOP 값을 피하고 싶습니다. 그래서 나는 성공적이지는 않지만 이것을 프로그램에서 완전히 처리하려고 시도하고 있습니다.

새로운 (실패한) 시도 :

ManagementObject 서비스; managementbaseobject stopservice;

service = new ManagementObject ( "win32_service.name = 'stopprogram'");

stopservice = service .invokemethod ( "stopservice", null, null);

이것이 확실하지 않습니다. Canstop 상황 때문에 멈출 수 없다고 생각합니다.

도움이 되었습니까?

해결책

"Canstop"은 Windows Service Control Manager의 서비스 등록의 속성입니다. 당신은 그것을 뾰족한 중간에 바꿀 수 없습니다.

물론, 자신의 서비스를 작성하기에 충분히 똑똑하다면 태스크 맨을 키우고 단순히 서비스 프로세스를 죽일만큼 똑똑합니다. Canstop은 서비스 하에서 깔개를 꺼내는 것을 막지 않습니다. Canstop은 서비스 제어 관리자에게 서비스에 "정지"명령을 보내지 말라고 만합니다.

무언가를 통과 할 수있게하려면 글로벌 이벤트를 사용하여 서비스 확인을 활성화/비활성화하거나 PC에서 게임을 제거하십시오! :-)

다른 팁

서비스에 직접 액세스하고 제어하려고 시도하는 대신 (레지스트리 나 파일과 같은) 어딘가에 깃발을 설정할 수있게되면서 제어하려는 이벤트를 실행하기 전에 서비스에 의해 확인됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top