2016-06-23 4 views
0

필요에 따라 모든 사용자에 대해 특정 프로세스의 모든 인스턴스를 종료 할 수있는 간단한 백그라운드 서비스를 작성하고 싶습니다. 프로세스는 항상 동일합니다 (Microsoft Access). 관리자 권한이없는 사용자는 백그라운드 서비스가 다른 작업으로 이동하기 전에 프로세스를 종료하도록 알려주는 스크립트를 실행할 수 있습니다. 로컬 시스템 계정에서 실행될 때 모든 프로세스를 종료 할 수있는 C로 작성된 작은 프로그램이 있지만 필요에 따라 트리거 될 수있는 서비스로 전환하는 방법을 모르겠습니다. 어떤 제안이라도 환영합니다. 또한 관리자 권한없이 모든 사용자에 대해 프로세스의 모든 인스턴스를 종료하는 다른 방법으로 공개됩니다.요청시 이름별로 프로세스를 종료하는 Windows 백그라운드 서비스

+0

나는 이것을하지 않았지만 [이] (http://stackoverflow.com/a/18637556/5095502)는 서비스와 이야기하는 간단한 방법처럼 보입니다. "스크립트"를 실행하는 대신에'sc.ExecuteCommand()'를 여러분의 서비스에 보내는 아주 작은 두번째 프로그램을 작성해야 할 것이다. – Quantic

+0

고마워, 내가 살펴볼거야! –

답변

0

당신은 SrvStart (당신이 this page에서 찾을 수 있습니다) 및 Windows 명령 줄 도구 sc.exe 같은 도구를 사용하여 실행 파일에서 서비스를 만들 수 있습니다. Here은 그렇게하는 데 유용한 자습서입니다.

서비스와 "대화"하려면 사용자 간권으로 실행되는 클라이언트 (스크립트 등)가 서비스를 요청하도록 일부 프로세스 간 통신 메커니즘을 구현해야합니다. 이 작업을 수행 할 수있는 방법은 많습니다 ... 사용 가능한 항목은 this page을 참조하십시오.

또 다른 방법은 C 실행 파일을 제거하고 C#으로 Windows .NET 서비스를 만드는 것입니다. 이 서비스에서 ServiceBase.OnCustomCommand을 재정의하십시오. 그런 다음 Windows 명령 행 도구 sc.exe을 사용하여 사용자 정의 명령을 서비스에 보낼 수 있습니다.

반면에 암호없이 사용자 계정에서 관리자 권한으로 실행 파일을 실행하는 것만 필요한 경우이 작업을 수행하는 바로 가기를 만드는 방법이 있습니다. 바로 가기를 만드는 방법에 대한 자세한 내용은 this page을 참조하십시오.

+0

감사합니다. 내 실행 파일은 로컬 시스템에서 실행될 때만 작동합니다. 그렇지 않으면 실행 파일이 실행되는 계정이 소유 한 프로세스 만 종료하기 때문입니다. 나는 너의 다른 제안을 들여다 볼 것이다! –

관련 문제