파일이 더 이상 존재하지 않으면 Windows 서비스를 어떻게 제거합니까?


570

서비스 파일이 더 이상 존재하지 않으면 .NET Windows 서비스를 어떻게 제거합니까?

InstallUtil을 사용하여 .NET Windows 서비스를 설치했습니다. 그 후 파일을 삭제했지만 실행을 잊었습니다.

 InstallUtil /u

먼저. 따라서 서비스는 여전히 서비스 MMC에 나열됩니다.

레지스트리에 들어가야합니까? 아니면 더 좋은 방법이 있습니까?



2
먼저 서비스를 중단 했습니까? (-> net stop yourservice)
Jos

매우 밀접하게 관련된 스레드는 여기에 있습니다 .
RBT

이 사이트는 저를 도와주세요 나는이 문제에서 당신을 도울 수 있기를 바랍니다 howtogeek.com/howto/windows-vista/…
Ahmed Elbendary

답변:


1130

최소한 세 가지 옵션이 있습니다. 사용 환경 설정 순서대로 제시했습니다.

방법 1- 리소스 키트에 포함 된 SC 도구 (Sc.exe)를 사용할 수 있습니다 . (Windows 7/8에 포함)

명령 프롬프트를 열고 입력

sc delete <service-name>

도구 도움말 스 니펫은 다음과 같습니다.

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

delete----------Deletes a service (from the registry).

방법 2 -delserv 사용

delserv 명령 줄 유틸리티를 다운로드 하여 사용하십시오. 이 도구는 Windows 2000 용으로 개발 된 레거시 도구입니다. 현재 Window XP 상자에서는 방법 1에 설명 된 sc로 대체되었습니다.

방법 3- 레지스트리 항목을 수동으로 삭제 (Windows 7/8에서는이 역효과가 나타납니다)

Windows 서비스는 다음 레지스트리 키 아래에 등록되어 있습니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

참조 키에서 서비스 이름을 가진 하위 키를 검색하고 삭제하십시오. 서비스 목록에서 서비스를 완전히 제거하려면 다시 시작해야 할 수도 있습니다.


23
방법 3은 Windows 7에서
역효과를 일으키는

29
방법 1에서 MMC에 서비스가 표시되지만 "지정된 서비스가 설치된 서비스로 존재하지 않습니다"오류가 발생할 수 있습니다 !!! 표시되는 이름이 DisplayName이기 때문입니다. HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services 트리에서 실제 서비스 이름을 찾아서 service-name으로 전달할 있습니다.
denispyr

9
방법 3은 Windows 7에서도 나에게 역효과를 주었다. 서비스는 설명과 함께 거기에있다<Failed to Read Description. Error Code: 2>
Zugwalt

27
sc와 함께 powershell을 사용하는 경우주의하십시오. set-content cmdlet으로 응용 프로그램을 재정의하고 sc delete blah를 실행하면 자동으로 실패합니다.
JonnyRaa

10
참고 : 방법 3을 수행 한 후 컴퓨터를 다시 시작해야합니다! 그런 다음 서비스 목록을보십시오. 아마 지금 사라 졌을 것입니다. 여전히 목록에 있으면 방법 1을 수행하여 해당 목록에서 제거하십시오.
아무데도의 동쪽

170

명령 프롬프트에서 Windows "sc.exe"유틸리티를 사용하십시오. 다음과 같이 실행하십시오.

sc delete <service-name>

21
서비스 이름에 공백이 있으면 큰 따옴표로 묶으십시오.
geoffc 2016 년

2
[SC] OpenService 실패 5 : 액세스가 거부 된 이유는 무엇입니까?
Adrian Enriquez

10
@AdrianEnriquez, 관리자로 cmd.exe를 실행하면이 문제가 해결되었습니다.
collapselettuce

3
명령을 사용한 후 Windows 8의 경우 서비스가 MMC 목록에 비활성화 된 상태로 나타납니다. 다시 시작하면 목록에서 서비스가 제거됩니다.
Ryan

이에 대한 권한을 높이는 방법이 있습니까? 위 명령을 입력 한 후에도 "액세스가 거부되었습니다"라는 메시지가 나타납니다
Nick

27

Windows 8에서 "sc delete"사용에 대한 참고 사항 :

1) 높은 권한으로 CMD 창을 엽니 다. [Windows Key-X는 옵션이있는 메뉴를 불러옵니다; "명령 프롬프트 (관리자)"를 선택하십시오.]
2) 서비스 목록에서 괄호 이름을 사용하십시오 . 예를 들어 서비스에서 "Google Update (gupdate)"를 읽을 때 "sc delete gupdate"를 사용했습니다.]


21

어떤 사람들 sc delete은 대답으로 언급 합니다. 이것이 내가 한 방법이지만 <service-name>매개 변수 를 찾는 데 시간이 걸렸습니다 .

이 명령 sc query type= service(형식은 매우 특별합니다. "서비스"앞의 공백)은 설치된 Windows 서비스 목록을 sc delete <service-name>명령 과 함께 사용할 정규화 된 이름과 함께 출력합니다 .

목록이 너무 길어서 출력을 텍스트 파일 (예 :)로 파이프 >> C:\test.txt한 다음 검색하는 것을 고려할 수 있습니다 .

이것은 명령 SERVICE_NAME과 함께 사용하는 것 sc delete <service-name>입니다.


2
허용 된 답변에 대한 내 의견을 참조하십시오. 서비스 이름은 서비스 패널에서 서비스의 속성 시트를보고 신속하게 확인할 수 있습니다.
donperk

2
즉 완전히 불필요 : 그들은 서비스 목록에 표시하는 경우, 당신은 당신이 서비스 목록에서 제거 할 서비스의 속성 열 수 있습니다 에서 서비스 목록을, 그리고 당신에게 서비스 이름을 표시합니다. 속성에 나열된 "서비스 이름"도 동일한 서비스 이름입니다. :)
neminem

2
네, 다른 방법으로 이름을 얻을 수 있다는 것을 알고 있습니다. 명령에 사용할 이름을 알아내는 데 어려움이 있었기 때문에 이것을 추가했습니다. 서비스 속성에 나열된 이름을 보았지만 명령에 사용할 이름인지는 알지 못했습니다. <service_name>을 포함하여 설치된 모든 서비스를 제거하는 데 명령 줄을 사용하는 것이 좋았습니다. 나는 이것을 필요로하는 몇 가지 서비스를 가지고 있었기 때문에 전체 목록을 파일로 덤프하는 것이 더 쉬워서 서비스 스냅인에서 조회하지 않고도 그들에게 다가 갈 수 있었다.
Robin French

sc query기본값 은 그대로 실행할 수 있습니다 type= service.
이안 켐

11

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

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

  1. 실행 을 Regedit 또는 Regedt32를

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

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

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

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

sc 삭제

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

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

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


9

도구를 사용하려면 Process Hacker를 사용할 수 있습니다

서비스 작성 양식 :

프로세스 해커 생성 서비스

서비스의 상황에 맞는 메뉴에서 삭제 :

프로세스 해커 삭제 서비스

Process Hacker가 Windows 고유의 Taskmgr.exe보다 Windows 프로세스 및 서비스를 관리하는 더 편리한 도구라는 것을 알았습니다. 특히 작업 관리자에서 서비스에 전혀 액세스 할 수없는 Windows XP의 경우.


4

Tomcat 서비스를 다시 설치해야했기 때문에 먼저 제거했습니다. 이것은 나를 위해 일했다 :

Start a command prompt window using run as administrator

sc query type= service >t.txt

(t.txt 파일을 편집하고 목록을 검색하여 Tomcat 서비스를 찾으십시오. Tomcat7이라고합니다)

sc delete Tomcat7

그러나 Tomcat 서비스가 실행되고 있지 않기 때문에 query 명령이 처음으로 작동하지 않았습니다. 실행중인 서비스 만 나열하는 것 같습니다. 서비스를 시작하고 query 명령을 다시 실행해야했습니다.


중지 된 서비스를 보려면 state매개 변수를 사용하십시오 .
Harry Johnston

3

원본 Service .InstallLog 및 .InstallState 파일이 여전히 폴더에 있으면 실행 파일을 다시 설치하여 파일을 바꾸고 InstallUtil / u를 사용한 다음 프로그램을 제거하십시오. 약간 복잡하지만 특정 인스턴스에서 저를 위해 일했습니다.


3

당신은 실행 시도 할 수 Autoruns를 편집에 손으로 레지스트리있는에서 당신을 저장할 것이다. 필요한 권한이 없을 때 특히 유용합니다.


0

1 단계 : 서비스가있는 디렉토리로 이동

명령 : cd c : \ xxx \ yyy \ service

2 단계 : 아래 명령을 입력하십시오

명령 : C : \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ InstallUtil.exe service.exe \ u

여기 service.exe는 서비스 exe이며 \ u는 서비스를 제거합니다. "제거가 완료되었습니다"라는 메시지가 나타납니다.

서비스를 설치하려면 위 명령에서 \ u를 제거하여 서비스를 설치하십시오.


3
OP는 원본 파일이 삭제되었다고 분명히 말했습니다.
AFract

0

을 (를) 실행하더라도 sc_delete서비스 레지스트리에 항목이 남아있을 수 있으므로 서비스를 다시 설치하면 손상된 레지스트리 항목 세트 (일치하지 않음)가 발생합니다. 우리가 한 일은 regedit이 남은 항목을 손으로 제거하는 것이 었습니다 .

참고 : sc_delete 후에도 ShipmunkService가 계속 표시됩니다!

그런 다음 다시 설치할 수 있으며 서비스가 올바르게 실행됩니다. 모두에게 행운을 빕니다.


0

명령 프롬프트로 Windows 서비스를 제거 하고이 명령을 작성하십시오.

cd\                                                                   

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319(or version in which you developed your service)                                           

installutil c:\\xxx.exe(physical path of your service) -d

0

-Windows+r cmd를 엽니 다.

-sc YourSeviceName 이 코드는 서비스를 제거합니다.

-Uninstal "YourService Path" 이 코드는 서비스를 제거합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.