"지정된 서비스가 삭제 된 것으로 표시되었습니다"오류 해결 방법


584

로 Windows 서비스를 제거하려고 sc delete <service name>하면 다음 오류가 발생합니다.

[SC] DeleteService 실패 1072 :

지정된 서비스가 삭제 표시되었습니다.

내가 이미 한 일 :

문제가 지속됩니다.

다음 단계는 무엇인가요?


4
재부팅하면 일반적으로 느린 상태가 해제됩니다.
Damien_The_Unbeliever

14
알아. 그러나 나는 덜 급진적 인 해결책에 대해 생각했습니다. 내 경우에는 하루에 30 번 재부팅하는 것이 허용되는 해결책이 아닙니다.
Arseni Mourzenko

54
"서비스를 정기적으로 삭제하는 이유는 무엇입니까?" : Windows 서비스를 작성하고 있습니다. 컴파일 될 때마다 다시 시작해야합니다. "아직 레지스트리에서 해킹을 하루에 30 번 해킹 할 수 있습니까?" : 완전히. 레지스트리에서 키를 제거해도 모든 것을 저장하고 열려있는 모든 앱을 닫고 잠시 기다렸다가 다시 열지 않아도됩니다.
Arseni Mourzenko

46
Windows 서비스를 작성했습니다. 등록을 수행하는 실제 코드를 변경하지 않으면 빌드를 수행 할 때마다 코드를 제거했다가 다시 설치할 필요가 없습니다. 경로가 여전히 동일한 한 이전 등록 정보는 계속 유효합니다.
Damien_The_Unbeliever

4
@NickTurner-버그 보고서에 링크 하시겠습니까? 당신이 말하는 버그가 무엇이든, 나는 만나지 않았습니다. 그리고 나는 MSI는 우리가 아마 구축하고 (적어도 나타납니다에서이 5 살짜리 질문에 대한 컨텍스트를 할 것을) dev에 컴퓨터에서 실행중인 서비스에 대해 얘기하고 있기 때문에 포함되어 있는지 확인하는 방법을 모르겠어요
Damien_The_Unbeliever

답변:


1243

서비스가“삭제 표시”에 멈출 수있는 몇 가지 원인이있을 수 있습니다.

  1. SysInternals의 프로세스 탐색기가 열립니다 . 닫으면 서비스가 자동으로 제거됩니다.

  2. 작업 관리자가 열립니다 .

  3. MMC (Microsoft Management Console)가 열립니다 . 모든 인스턴스를 닫으려면을 실행하십시오 taskkill /F /IM mmc.exe.

  4. 서비스 콘솔이 열립니다 . 이는 서비스 콘솔이 MMC에 의해 호스팅되므로 이전 시점과 동일합니다.

  5. 이벤트 뷰어가 열립니다 . 다시, 이것은 세 번째 요점과 동일합니다.

  6. HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ {service name} 키가 존재합니다 .

  7. 다른 사람이 서버에 로그인 했으며 앞에서 언급 한 응용 프로그램 중 하나가 열려 있습니다.

  8. 서비스를 디버깅하는 데 사용되는 Visual Studio 인스턴스 가 열려 있습니다.


9
작업 관리자도 같은 것으로 보입니다. 아래에 언급 된 바와 같이 서비스 콘솔을 열어 둔 상태에서도이 문제가 발생할 수 있습니다.
CodingBarfield

4
...이를 모두 닫아도 도움이되지 않고 서비스가 "삭제 표시"로 표시되면 전체 재시작 대신 간단한 로그 오프를 수행하는 것입니다. 그것은 몇 번 도움이되었습니다.
Nedko

2
한 가지 일반적인 워크 플로 : 사악한 동료들도 원격 서버에 로그인되어 있으며 모두 열려 있습니다.
Chris O

72
서비스 콘솔을 닫으면이 문제가 해결되었습니다! 내 프로세스는 다음과 같습니다 . VS2012 x64 기본 도구 명령 프롬프트에서 -> 서비스 실행 파일이있는 디렉토리로 이동 -> installutil / u servicename.exe (사용되지 않는 서비스 제거) -> 새로운 빌드 된 서비스 exe로 복사 - > installutil servicename.exe (업데이트 된 서비스 설치) . 일반적으로 문제없이 즉시 제거하고 다시 설치할 수 있습니다. 내가 무작위로 할 수 없을 때까지. 서비스 콘솔을 닫으면 해결되었습니다. 팁 고마워!
thehelix

17
내 생각에 Process Explorer가 가장 큰 것입니다. 굵게 표시하거나 목록의 맨 위로 이동하는 것이 좋습니다.
Coxy

222

서비스 콘솔을 열어 둔 채로 발생할 수도 있습니다. Windows는 서비스가 종료 될 때까지 서비스를 실제로 삭제하지 않습니다.


3
질문에 표시된대로 테스트 중에 "Microsoft Management Console이 닫혔습니다".
Arseni Mourzenko

25
제 경우에는 서비스 콘솔이 문제였습니다. 파일을 닫았다가 다시 열면 삭제 된 서비스가 사라졌습니다.
Farrukh Najmi

3
창문을 열어 두는 것이 믿기 어려워요 ... 감사합니다!
Karol Tyl

이상하게도 F5를 누르는 것만으로 서비스가 제거 된 목록을 새로 고치는 경우가 많이 있었지만 이상하게도 나를 위해 일했습니다.
Steve Smith

1
당신은 내 하루를 저장
Pranoy Sarkar

50

나는 같은 문제가 있었고 마침내 서비스 프로세스를 중단하기로 결정했습니다.

아래 단계를 시도하십시오.

  • 서비스의 프로세스 ID를 얻습니다.

    sc queryex <service name>

  • 프로세스를 죽이다

    taskkill /F /PID <Service PID>


2
내 PID는 0이므로 죽이지 않는 것이 좋습니다!
rob

이 단계 이하로 할 당신은 서비스를 제거 할 수 있습니다 1 실행 installutil 명령을 실행하는 것이 3의 위치 서비스의 .exe 파일에 2 - 변화 방향을 cmd를 / U <yourfilename.exe>
알리 사 드리는

sc queryex의 경우 +1 디버거를 연결하려는 경우 PID를 얻기 위해 사용할 수 있습니다.
Paul McCarthy

44

내 경우에는을 닫은 후에 효과가 Services있었습니다. Services.msc이 열려 있는지 확인하고 , 그렇다면 닫고 서비스 프로세스가에 있는지 확인하십시오 Task Manager.


13

즉, services.msc에서 서비스가 여전히 비활성화 된 것으로 표시됩니다. services.msc를 닫고 관리자 권한으로 다시 엽니 다 ... 서비스가 표시되지 않습니다. 이제 명령을 사용하여 서비스를 설치하십시오.

installutil "서비스 경로"


11

위에서 제안한 레지스트리 키를 삭제하면 서비스가 중지 상태에 빠졌습니다. 다음 절차가 저에게 효과적이었습니다.

작업 관리자 열기> 서비스 선택 탭> 서비스 선택> 마우스 오른쪽 버튼을 클릭하고 "프로세스로 이동"> 프로세스를 마우스 오른쪽 단추로 클릭 한 후 프로세스 종료를 선택하십시오.

그 후 서비스는 사라져야한다


7

확인해야 할 사항이 하나 더 있습니다. 작업 관리자를 살펴보십시오. 다른 사용자가이 상자에 연결되어있는 경우 '연결이 끊긴'경우에도 실제로 로그 아웃하여 서비스를 삭제해야합니다.


4
불필요한. 모든 사람이 MMC (Microsoft Management Console) 및 서비스 제어판을 종료해야합니다.
Lorne의 후작

6

Windows 7 이후의 Windows 버전 (확인되지 ​​않았지만 Windows Server 2012 R2의 최신 경험에 의하면)에서는 SCM (Service Control Manager)이보다 엄격한 것으로 보입니다.

Windows 7에서 다른 프로세스를 생성하는 동안 서비스 프로세스가 아직 남아 있는지 확인하고 있으며 서비스가 중지 된 것처럼 보이더라도 CreateService / DeleteService에 대한 후속 호출에 대해 ERROR_SERVICE_MARKED_FOR_DELETE (1072)를 반환 할 수 있습니다.

여기에서 Windows API 코드를 이야기하고 있지만 발생하는 상황을 명확하게 설명하고 싶기 때문에이 시퀀스에서 언급 된 오류가 발생할 수 있습니다.

SC_HANDLE hScm = OpenSCManager(nullptr, nullptr, SC_MANAGER_ALL_ACCESS);

SC_HANDLE hSvc = OpenService(hScm, L"Stub service", SERVICE_STOP | SERVICE_QUERY_STATUS | DELETE);

SERVICE_STATUS ss;
ControlService(hSvc, SERVICE_CONTROL_STOP, &ss);
// ... wait for service to report its SERVICE_STOPPED state

DeleteService(hSvc);
CloseServiceHandle(hSvc);
hSvc = nullptr;

// any further calls to CreateService/DeleteService will fail
// if service process is still around

이미 SERVICE_STOPPED 상태를보고 한 후에도 서비스 프로세스가 계속 유지되는 이유는 놀라운 일이 아닙니다. StartServiceCtrlDispatcherAPI 에 대한 호출에서 기본 스레드가 '고정 된'일반 프로세스 이므로 먼저 중지 제어 조치에 반응하지만 나머지 코드 시퀀스를 실행해야합니다.

불행히도 SCM / OS가이를 제대로 처리하지 못하고 있습니다. 프로그래밍 방식의 솔루션은 간단하고 정확합니다. 서비스를 중지하기 전에 서비스 실행 파일의 프로세스 핸들을 얻은 다음이 핸들이 신호를받을 때까지 기다리십시오.

시스템 관리 관점에서 문제에 접근하는 경우 솔루션은 서비스 프로세스가 완전히 사라질 때까지 기다리는 것입니다.


6

이것은 나를 위해 일한 것입니다 :-같은 문제가 발생했습니다 : 내 서비스가 '삭제 표시로 고정되었습니다'. -services.msc를 열었습니다. 이미 제거되었지만 서비스가 실행중인 것으로 표시되었습니다. -중지를 클릭했습니다. 서비스가 제어 메시지를 수신 할 수있는 상태가 아니라는 오류 메시지를 받았습니다. 그럼에도 불구하고 서비스가 중지되었습니다. -폐쇄 된 services.msc. -services.msc를 다시 열었습니다. -서비스가 사라졌습니다 (더 이상 서비스 목록에 표시되지 않음).

(환경은 Windows 7이었습니다.)


2
여기 Windows 2008에서는 서비스 패널을 닫아야했습니다
Mathijs Segers

5

내 경우에는 프로그램의 exe 파일이 taskkill /f /im dongleserver.exe있는 곳을 실행 dongleserver.exe합니다.

그런 다음 이미 프로그램을 다시 설치할 수 있습니다.


4

필자의 경우 eventLog 소스를 만드는 동안 처리되지 않은 예외로 인해 발생했습니다. 시도 포착을 사용하여 원인을 찾아냅니다.


4

현재 열려있는 모든 창을 닫고 다음 명령을 실행하면 문제가 해결되었습니다.

taskkill /F /IM mmc.exe

3

여기에 몇 가지 답변에서 제안한대로 서비스 콘솔을 닫으면 서비스를 제거 할 수있었습니다. 내 시나리오에서 이것은 모든 후속 재설치 및 서비스 제거로 인해 이러한 추가 단계를 수행해야하기 때문에 단기 수정이었습니다. 내 web.config 파일을 검토 한 결과 수정 된 오류가있어 서비스 콘솔 단계를 추가로 닫지 않고도 서비스를 쉽게 제거 할 수있었습니다.


1

이것은 나를 위해 작동합니다.

  • 작업 관리자 열기
  • 서비스 선택 탭
  • 문제가있는 서비스를 선택하십시오
  • 마우스 오른쪽 버튼을 클릭하고 "세부 정보로 이동"을 선택하십시오.
  • 서비스를 마우스 오른쪽 버튼으로 클릭하고 "프로세스 트리 종료"를 선택하십시오.

프로세스 트리 종료는 프로세스와 프로세스가 작성한 모든 프로세스를 종료합니다.

그런 다음 서비스를 다시 설치할 수 있습니다.


1

필자의 경우 서비스 이름은 '모니터'라는 Windows 서비스에서도 사용됩니다. 서비스를 업데이트하려고 할 때 서비스를 제거하려고 시도했습니다. 설치 프로그램은 Windows 서비스 '모니터'를 제거하려고했습니다. 할 수 없었고 설치는 항상 롤백되었습니다.

서비스 이름을 다른 것으로 바 꾸었습니다.


0

@MainMa에서 제공 한 단계가 작동하지 않으면 다음 단계를 수행하십시오.

1 단계 Windows 작업 관리자 또는 taskkill / F / PID 사용하여 프로세스를 종료하십시오. 'sc queryex'명령으로 프로세스의 pid를 찾을 수 있습니다. 여전히 제거 할 수없는 경우 다음 단계를 시도하십시오.

2 단계 이상인 경우

이름별로 서비스 검색을 위해 Windows 검색 자동 실행을 실행 하고 결과를 삭제하십시오.


0

오류의 주요 원인은 프로세스가 중지되지 않았기 때문입니다. 문제 해결을 시작하려면 작업 관리자가 서비스로 이동하여 해당 서비스 프로세스를 종료하고 프로세스를 종료하는 것보다 여전히 서비스를 볼 수 있는지 확인하십시오. 이 문제는 완전히 해결 될 것입니다.


0

Application Verifier를 사용하여 승리 서비스를 확인할 때이 문제가 발생했습니다. App Ver를 닫은 후에도 서비스가 삭제되지 않았습니다. App Ver에서 서비스를 제거해야만 문제가 해결되었으며 서비스가 즉시 삭제되었습니다. 서비스를 삭제하려고 시도한 후에도 여전히 서비스를 사용하는 일부 프로세스 인 것 같습니다.


0

따라야 할 단계 :

1 단계 : C : \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 위치로 이동

2 단계 실행 명령 : installutil / u full-path / servicename.exe

3 단계 서비스 패널을 닫았다가 다시 엽니 다

4 단계 실행 명령 : installutil full-path / servicename.exe


1
참고 : installutil은 관리자로만 작동하므로 관리자로 셸을 엽니 다.
ingconti

0

대부분 서비스 삭제가 실패하기 때문에

protected override void OnStop()

서비스를 중지 할 때 오류가 발생합니다. try catch 안에 물건을 감싸면 삭제 오류 표시가 방지됩니다.

protected override void OnStop()
{
            try
            {
                //things to do
            }
            catch (Exception)
            {
            }

}


0

PowerShell 원격 세션 스크립트를 통해 서비스를 삭제하는 동안, 특히 여러 번 서비스를 삭제하려고 할 때 이러한 상황이 발생할 수 있습니다. 이 경우 삭제하기 전에 세션을 다시 작성하십시오.

Remove-PSSession -Session $session
$newSession = New-PSSession -ComputerName $Name  -Credential $creds -ErrorAction Stop
Enter-PSSession $newSession
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.