시스템에 남아있는 실행 파일이 없을 때 Windows 서비스를 제거하는 방법은 무엇입니까?


166

시스템에 남아있는 실행 파일이 없을 때 Windows 서비스를 제거하려면 어떻게합니까? installutil -u시스템에 실행 파일이 남아 있지 않아 실행할 수 없습니다 . 서비스 콘솔에서 여전히 서비스 항목을 볼 수 있습니다.

이 상태의 이유는 아마도 서비스를 올바르게 제거하지 못하는 msi 패키지의 문제 때문일 수 있지만 서비스가이 상태에 있으면 어떻게 해결합니까?


답변:


325

"관리자"명령 프롬프트에서 다음을 실행하여 sc.exe (Windows Resource Kit에 포함되어 있음)를 사용하여 제거 할 수 있어야합니다.

sc.exe delete <service name>

어디 <service name> exe가 아닌 서비스 관리 콘솔에 표시되는 서비스 자체의 이름입니다.

시스템 폴더에서 sc.exe를 찾을 수 있으며 실행하려면 관리자 권한이 필요합니다. 이 Microsoft KB 기사의 추가 정보 .

또는 DeleteService () API를 직접 호출 할 수 있습니다 . OpenSCManager () 등을 통해 서비스 제어 관리자에 대한 핸들을 가져와야하기 때문에이 방법은 조금 더 복잡 합니다.


그것은 내가 원하는 것을 정확하게하고 레지스트리에서 서비스를 제거했습니다. 더 이상 서비스 콘솔에 표시되지 않습니다. 감사!
Magnus Lindhe

"액세스가 거부되었습니다."라는 메시지가 나타납니다. 다음에 무엇을할지?
Nick

4
PowerShell의 방법 1에서 명령을 실행하려는 사람을위한 참고 사항 : sc는 서비스 제어 관리자와 통신하기위한 것이 아닙니다. Set-Content 명령입니다. 대신 sc.exe를 사용하십시오.
Yasser Sinjab

1
오류 1072가 발생하면 서비스 제어판이 열려 있지 않은지 확인하십시오 ( 이 다른 질문 참조 )
Giles

아래 오류가 발생했습니다. [SC] OpenService FAILED 1060 : 지정된 서비스가 설치된 서비스로 존재하지 않습니다. 나중에 전원 쉘로 동일하게 시도했으며 작동합니다!
crazydan

24

레지스트리를 통해 Windows 서비스 제거

올바른 경로를 알고 있으면 레지스트리에서 서비스를 제거하는 것이 매우 쉽습니다. 내가 한 방법은 다음과 같습니다.

  1. 실행 을 Regedit 또는 Regedt32를

  2. 레지스트리 항목 "HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services"로 이동하십시오.

  3. 삭제하려는 서비스를 찾아서 삭제하십시오. 키를보고 서비스가 사용중인 파일을 확인하고 필요한 경우 파일을 삭제할 수도 있습니다.

명령 창을 통해 Windows 서비스 삭제

또는 명령 프롬프트를 사용하고 다음 명령을 사용하여 서비스를 삭제할 수도 있습니다.

sc 삭제

다음 명령을 사용하여 서비스를 만들 수도 있습니다

sc "MorganTechService"binpath = "C : \ Program Files \ MorganTechSPace \ myservice.exe"생성

참고 : 서비스 관리자에서 목록을 업데이트하려면 시스템을 재부팅해야 할 수도 있습니다.


3
레지스트리를 안전하게 하는가? 레지스트리의 "최종 결과"는 "최종 결과"와 동일 sc delete합니까?
Pacerier

5
아니요, 방금 regedit에서 서비스를 직접 삭제하려고했습니다. 결과적으로 이제 삭제하려는 서비스 항목이 서비스에 남아있는 반면 설명은 "<설명을 읽지 못했습니다. 오류 코드 : 2>"
GJ입니다.

11

여기에서 발견

방금 Windows XP에서 시도했지만 효과가있었습니다.

로컬 컴퓨터 : sc \\. [서비스 이름] 삭제

  Deleting services in Windows Server 2003

  We can use sc.exe in the Windows Server 2003 to control services, create services and delete services. Since some people thought they must directly modify the registry to delete a service, I would like to share how to use sc.exe to delete a service without directly modifying the registry so that decreased the possibility for system failures.

  To delete a service: 

  Click “start“ - “run“, and then enter “cmd“ to open Microsoft Command Console.

  Enter command:

  sc servername delete servicename

  For instance, sc \\dc delete myservice

  (Note: In this example, dc is my Domain Controller Server name, which is not the local machine, myservice is the name of the service I want to delete on the DC server.)

  Below is the official help of all sc functions:

  DESCRIPTION:
    SC is a command line program used for communicating with the
    NT Service Controller and services. 
  USAGE:
          sc

10

서비스를 삭제하는 powershell 스크립트는 다음과 같습니다. foo

$foo= Get-WmiObject -Class Win32_Service -Filter "Name='foo'"
$foo.delete()


3

동일한 서비스의 실행 파일 사본을 작성하여 기존 서비스의 동일한 경로에 붙여 넣은 후 설치 제거하십시오.


좋은 제안입니다. 그래도 작동하지 않으면 다시 설치하고 installutil -u를 실행 한 다음
wcm

동일한 exe의 사본을 작성하거나 다른 파일의 이름을 바꾸면 제대로 작동합니까?
Imran Rizvi

@Samiksha, 나는 그가 " 실행 파일의 사본 "이 없다고 생각했다 ?
Pacerier

3

나는 이것을 위해 PowerShell을 사용할 것이다.

Remove-Service -Name "TestService"

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/remove-service


PS6에서만 사용 가능
BozoJoe

아래 오류가 발생했습니다. [SC] OpenService FAILED 1060 : 지정된 서비스가 설치된 서비스로 존재하지 않습니다. 나중에 파워 쉘로 sc delete <service name>을 시도했지만 작동합니다! 파워 쉘이라는 아이디어 덕분입니다.
crazydan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.