"विलोपन के लिए निर्दिष्ट सेवा को चिह्नित किया गया है" कैसे हल किया जाए


584

मैं एक Windows सेवा को निकालने sc delete <service name>और निम्न त्रुटि का सामना करने की कोशिश करता हूं :

[SC] डिलीट सेवा १० :२

निर्दिष्ट सेवा को हटाने के लिए चिह्नित किया गया है।

मैंने पहले से ही क्या किया है:

समस्या बरकरार।

अगला कदम क्या है?


4
एक रिबूट को आमतौर पर किसी भी सुस्त स्थिति को साफ करना चाहिए।
डेमियन_इन_उन्नीवर

14
मुझे पता है। लेकिन मैंने कम कट्टरपंथी समाधान के बारे में सोचा। प्रति दिन तीस बार रिबूट करना मेरे मामले में स्वीकार्य समाधान नहीं होगा।
आर्सेनी मूरज़ेंको

54
"आप इसे नियमित रूप से सेवाएं क्यों दे रहे हैं?" : मैं एक Windows सेवा लिख ​​रहा हूँ। हर बार संकलित होने के बाद, इसे फिर से शुरू किया जाना चाहिए। "फिर भी प्रति दिन 30 बार रजिस्ट्री में हैकिंग स्वीकार्य है?" : पूरी तरह से। रजिस्ट्री से एक चाबी निकालना मुझे सब कुछ बचाने के लिए मजबूर नहीं करता है, हर खुले ऐप को बंद करें, एक मिनट के लिए प्रतीक्षा करें, और फिर सब कुछ फिर से खोलें।
आर्सेनी मोरज़ेंको

46
मैंने विंडोज़ सेवाएँ लिखी हैं। जब तक आप पंजीकरण करने वाले वास्तविक कोड को बदल नहीं रहे हैं, तब तक हर बार जब आप बिल्ड करते हैं, तो इसे अनइंस्टॉल और पुनः इंस्टॉल करने की कोई आवश्यकता नहीं है। जब तक पथ अभी भी समान है, तब तक पुराने पंजीकरण की जानकारी अभी भी मान्य होगी।
Damien_The_Unbeliever

4
@NickTurner - किसी बग रिपोर्ट का लिंक? आप जिस भी बग का जिक्र कर रहे हैं, मैंने उसका सामना नहीं किया है। और मुझे यकीन नहीं है कि एक MSI कैसे शामिल है क्योंकि हम एक देव मशीन पर निर्माण और चलने वाली सेवाओं के बारे में बात कर रहे हैं (कि कम से कम इस 5 साल पुराने सवाल पर संदर्भ प्रतीत होता है)
Damien_The_Unbeliever

जवाबों:


1243

ऐसे कई कारण हो सकते हैं जो सेवा को "विलोपन के लिए चिह्नित" करने में फंस जाते हैं।

  1. SysInternals 'प्रोसेस एक्सप्लोरर खोला जाता है । इसे बंद करने से सेवा को स्वचालित रूप से हटा दिया जाना चाहिए।

  2. टास्क मैनेजर खोला जाता है

  3. Microsoft प्रबंधन कंसोल (MMC) खोला गया है । यह सुनिश्चित करने के लिए कि सभी इंस्टेंस बंद हैं, चलाएं taskkill /F /IM mmc.exe

  4. सेवाएँ कंसोल खोला गया है । यह पिछले बिंदु के समान है, क्योंकि MMC द्वारा कंसोल को होस्ट किया जाता है।

  5. इवेंट व्यूअर खोला है । दोबारा, यह तीसरे बिंदु के समान है।

  6. प्रमुख HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ {सेवा नाम} मौजूद है

  7. किसी और को सर्वर में लॉग इन किया गया है और पहले से उल्लेखित अनुप्रयोगों में से एक को खोला गया है।

  8. सेवा को डीबग करने के लिए उपयोग किया गया Visual Studio का एक उदाहरण खुला है।


9
टास्क मैनेजर भी ऐसा ही करने लगता है। और जैसा कि नीचे दिया गया है कि सर्विसेज कंसोल खुला होने से यह भी हो सकता है।
कोडिंगबारफील्ड

4
... और अगर इन सभी को बंद करने से अभी भी मदद नहीं मिलती है और आप अभी भी सेवा को "हटाने के लिए चिह्नित" के रूप में देखते हैं, तो पूर्ण पुनरारंभ के बजाय सरल लॉग ऑफ करें। इसने मुझे कुछ समय मदद की।
नेदको

2
एक सामान्य वर्कफ़्लो: आपके नापाक सहयोगियों को भी रिमोट सर्वर में लॉग इन किया जाता है, और वे सब कुछ खुला है ...
क्रिस ओ

72
सेवाओं के कंसोल को बंद करने से मेरे लिए यह समस्या हल हो गई! मेरी प्रक्रिया निम्नलिखित थी: VS2012 x64 नेटिव टूल कमांड प्रॉम्प्ट में -> सर्विस एक्सटेक्टेबल के साथ डायरेक्टरी में नेविगेट करें -> इंस्टालिटिल / यू सर्विसिनेम। Exe (अप्रचलित सर्विस को अनइंस्टॉल करने के लिए) -> नए बिल्टेड एक्सटी पर कॉपी करें - > installutil servicename.exe (अद्यतन सेवा स्थापित करने के लिए) । मैं आमतौर पर स्थापना रद्द कर सकता हूं और बिना किसी समस्या के तुरंत पुन: स्थापित कर सकता हूं। जब तक मैं बेतरतीब ढंग से नहीं कर सकता। सेवाएँ कंसोल को बंद करने से इसे हल किया गया। पारितोषिक के लिए धन्यवाद!
इलिक्स

17
प्रोसेस एक्स्प्लोरर यहाँ बड़ा है, मेरी राय में। मेरा सुझाव है कि इसे मोड़कर / या सूची में सबसे ऊपर ले जाया जाए।
कोक्सी

222

यह सर्विसेज कंसोल को खुला छोड़ने के कारण भी हो सकता है। विंडोज वास्तव में सेवा को तब तक नहीं हटाएगा जब तक कि यह बंद न हो जाए।


3
जैसा कि मैंने अपने प्रश्न में संकेत दिया था, परीक्षणों के दौरान "Microsoft प्रबंधन कंसोल बंद है"।
आर्सेनी मूरज़ेंको

25
मेरे मामले में सर्विसेज कंसोल समस्या थी। जैसे ही मैंने इसे बंद किया और इसे फिर से खोला, हटा दी गई सेवाएं चली गईं।
फारुख नजमी

3
यह विश्वास करना मुश्किल है कि खिड़की खुली रखना मामला था ... धन्यवाद!
करोल टाइल

यह मेरे लिए भी काम करता है, हालांकि अजीब तरह से बहुत सारे मामले हैं जहां बस F5 दबाने से सूची हटा दी जाएगी।
स्टीव स्मिथ

1
आपने मेरा दिन बचा लिया
प्रणॉय सरकार

48

मुझे एक ही समस्या थी, आखिरकार मैं सेवा प्रक्रिया को मारने का फैसला करता हूं।

इसके लिए निम्न चरणों का प्रयास करें:

  • सेवा की प्रक्रिया आईडी प्राप्त करें

    sc queryex <service name>

  • के साथ प्रक्रिया को मार डालो

    taskkill /F /PID <Service PID>


2
मेरा पीआईडी ​​0 है, इसलिए मैंने बेहतर था कि इसे न मारें!
लूटने

आप इसके लिए सेवा को अनइंस्टॉल कर सकते हैं, नीचे दिए गए चरणों को चलाएं 1- रन सीएमडी 2- अपनी दिशा की .exe फ़ाइल को बदलें। यह पता लगाएं कि 3- कमांड कमांडट्यूटिल / यू <yourfilename.exe> ​​निष्पादित करें
अली सदरी

Sc scex के लिए +1 मैं पीआईडी ​​पाने के लिए उपयोग कर पाऊंगा अगर मैं डिबगर संलग्न करना चाहता हूं
पॉल मैकार्थी

44

मेरे मामले में इसे बंद करने के बाद काम किया Services। जाँच करें कि Services.mscक्या खुला है, यदि हाँ इसे बंद करें और जाँच करें कि सेवा की कोई प्रक्रिया पाई गई है Task Manager


13

इसका मतलब है कि सेवा अभी भी services.msc में अक्षम के रूप में सूचीबद्ध है। बस services.msc बंद करें और व्यवस्थापक के रूप में फिर से खोलें ... सेवा सूचीबद्ध नहीं होगी। अब, कमांड का उपयोग करके सेवा स्थापित करें,

"सेवा का पथ"


11

ऊपर बताई गई रजिस्ट्री कुंजियों को हटाने से मेरी सेवा रुकने की स्थिति में अटक गई। निम्नलिखित प्रक्रिया मेरे लिए काम की है:

कार्य प्रबंधक खोलें> सेवाओं का चयन करें टैब> सेवा का चयन करें> राइट क्लिक करें और "प्रक्रिया पर जाएं"> प्रक्रिया पर राइट क्लिक करें और अंतिम प्रक्रिया का चयन करें

उसके बाद सेवा चली जानी चाहिए


7

जांच करने के लिए एक और चीज़ की खोज की - टास्क मैनेजर में देखें - यदि अन्य उपयोगकर्ता इस बॉक्स से जुड़े हैं, भले ही वे 'डिस्कनेक्ट' हो जाएं, तो आपको वास्तव में उन्हें हटाने के लिए सेवा प्राप्त करने के लिए साइन आउट करना होगा।


4
अनावश्यक। आपको बस यह सुनिश्चित करना है कि हर कोई Microsoft प्रबंधन कंसोल (MMC) और सेवा नियंत्रण कक्ष से बाहर निकल जाए।
लोर्ने जूल का मार्किस

6

ऐसा लगता है कि विंडोज 7 (बाद में विंडोज सर्वर 2012 आर 2 के साथ नवीनतम अनुभव से) विंडोज संस्करणों पर, सेवा नियंत्रण प्रबंधक (एससीएम) अधिक सख्त है।

जबकि विंडोज 7 पर यह सिर्फ एक अन्य प्रक्रिया को जन्म देता है, अब यह जाँच रहा है कि क्या सेवा प्रक्रिया अभी भी आस-पास है और ERROR_SERVICE_MARKED_FOR_DELETE (1072) किसी भी बाद के कॉल के लिए CreateService / DeleteService को लौटा सकती है, भले ही सेवा बंद हो जाए।

मैं यहां विंडोज एपीआई कोड की बात कर रहा हूं, लेकिन मैं स्पष्ट रूप से रेखांकित करना चाहता हूं कि क्या हो रहा है, इसलिए इस अनुक्रम में उल्लिखित त्रुटि हो सकती है:

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 स्थिति आश्चर्यजनक नहीं है। यह एक नियमित प्रक्रिया है, जिसका मुख्य धागा StartServiceCtrlDispatcherएपीआई के लिए इसकी कॉल में 'अटक' जाता है, इसलिए यह पहले स्टॉप कंट्रोल एक्शन पर प्रतिक्रिया करता है, लेकिन फिर इसके शेष कोड अनुक्रम को निष्पादित करना पड़ता है।

यह दुर्भाग्यपूर्ण है कि SCM / OS हमारे लिए इसे ठीक से नहीं संभाल रहा है। एक प्रोग्रामेटिक समाधान थोड़े सरल और सटीक है: सेवा को रोकने से पहले सेवा निष्पादन योग्य प्रक्रिया को प्राप्त करें, फिर इस हैंडल के सिग्नल होने का इंतजार करें।

यदि सिस्टम प्रशासन के दृष्टिकोण से समस्या आ रही है, तो समाधान पूरी तरह से गायब होने के लिए सेवा प्रक्रिया की प्रतीक्षा करना है।


6

यह मेरे लिए काम कर रहा है: - मैंने एक ही मुद्दे को मारा: मेरी सेवा 'विलोपन के लिए चिह्नित' में अटक गई थी। - मैंने सेवाएं खोल दी हैं। msc मेरी सेवा चलने के रूप में दिखाई दी, हालाँकि यह पहले ही अनइंस्टॉल हो चुकी थी। - मैंने क्लिक स्टॉप प्राप्त किया एक त्रुटि संदेश, यह कहते हुए कि सेवा नियंत्रण संदेश प्राप्त करने की स्थिति में नहीं है। फिर भी, सेवा बंद कर दी गई। - बंद सेवाएं। msc। - फिर से खोल दी गई सेवाएं। msc। - सेवा चली गई थी (अब सेवाओं की सूची में नहीं दिखा)।

(पर्यावरण विंडोज 7. था)


2
विंडोज 2008 यहां, मुझे बस सेवाओं के पैनल को बंद करना था
मैथिज सीजर

5

मेरे मामले में, मैं निष्पादित करता हूं taskkill /f /im dongleserver.exe, जहां dongleserver.exeमेरे कार्यक्रम की एक्साई फ़ाइल है।

फिर मैं पहले से ही अपने प्रोग्राम को फिर से इंस्टॉल कर सकता हूं।


4

मेरे मामले में, यह इकलौते अपवाद के कारण हुआ था जबकि इवेंटलॉग स्रोत बनाया गया था। कारण को इंगित करने के लिए कैच पकड़ने का उपयोग करें।


4

वर्तमान में खुली हुई प्रत्येक विंडो को बंद करके निम्नलिखित कमांड को चलाकर मेरे लिए समस्या हल की गई:

taskkill /F /IM mmc.exe

3

यहां दिए गए कुछ उत्तरों के अनुसार सुझाए गए सेवाओं के कंसोल को बंद करने से मुझे सेवा को हटाने की अनुमति मिली। मेरे परिदृश्य में यह केवल एक अल्पकालिक सुधार था क्योंकि बाद के सभी पुनर्स्थापना और सेवा को हटाने से मुझे इन अतिरिक्त कदम उठाने की आवश्यकता होगी। मेरी web.config फ़ाइल की समीक्षा करते हुए, यह पता चला कि एक त्रुटि थी जो एक बार तय हो गई थी, जिसने मुझे सेवाओं के अतिरिक्त चरण को बंद किए बिना आसानी से सेवा को हटाने की अनुमति दी।


1

यह मेरे लिए काम करता है।

  • टास्क मैनेजर खोलें
  • सेवाओं टैब का चयन करें
  • समस्या के साथ सेवा का चयन करें
  • राइट क्लिक करें और "विवरण पर जाएं" चुनें
  • सेवा पर राइट क्लिक करें और "एंड प्रोसेस ट्री" चुनें

अंतिम प्रक्रिया पेड़ प्रक्रिया को समाप्त कर देगा और प्रक्रिया द्वारा बनाई गई सभी प्रक्रियाएं।

उसके बाद, आप सेवा को पुनर्स्थापित कर सकते हैं।


1

मेरे मामले में, सेवा का नाम 'मॉनिटर' था, जिसका उपयोग 'मॉनिटर' नामक एक विंडोज़ सेवा द्वारा भी किया जाता है, जब मैंने अपनी सेवाओं को अपडेट करने की कोशिश की, तो मैंने उन्हें अनइंस्टॉल करने की कोशिश की, इंस्टॉलर ने विंडोज़ सेवा 'मॉनिटर' को हटाने की कोशिश की, जो इसे नहीं कर सकता है, और स्थापना हमेशा वापस लुढ़का हुआ था।

मैंने अपनी सेवा का नामकरण कुछ और करने के लिए किया


0

यदि @MainMa द्वारा प्रदान किए गए चरण निम्न चरणों का पालन नहीं करते हैं

चरण 1 विंडो कार्य प्रबंधक से या टास्ककिल / एफ / पीआईडी ​​का उपयोग करके प्रक्रिया को मारने का प्रयास करें। आप इस प्रक्रिया को 'sc queryex' कमांड से देख सकते हैं। यदि आप अभी भी स्थापना रद्द नहीं कर सकते हैं तो अगले चरण का प्रयास करें।

चरण 2 यदि ऊपर है

नाम से सेवा के लिए विंडोज खोज के लिए ऑटोरन चलाएं और परिणाम हटाएं।


0

त्रुटि का मुख्य कारण प्रक्रिया को रोकना नहीं है। इसे हल करने के लिए कार्य प्रबंधक सेवाओं पर जाएं और देखें कि क्या आप अभी भी अपनी सेवा को उस सेवा की प्रक्रिया में जाने और प्रक्रिया को समाप्त करने में सक्षम हैं। समस्या से पूरी तरह हल हो जाएगा।


0

जब मैं अपनी जीत सेवा को सत्यापित करने के लिए एप्लिकेशन सत्यापनकर्ता का उपयोग कर रहा था तो मुझे यह समस्या आ रही थी। ऐप वेर को बंद करने के बाद भी मेरी सेवा को हटाने से रोक दिया गया था। केवल ऐप वेर से सेवा को हटाने से समस्या हल हो गई और सेवा तुरंत हटा दी गई। आपके द्वारा किसी को हटाने का प्रयास करने के बाद भी आपकी सेवा का उपयोग करते हुए कुछ प्रक्रिया दिखती है।


0

अनुसरण करने के चरण:

चरण -1 गोटो को स्थान C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319

step-2 run कमांड: installutil / u full-path / servicename.exe

चरण -3 क्लोज सर्विसेज पैनल और इसे फिर से खोलें

चरण -4 रन कमांड: installutil पूर्ण-पथ / servicename.exe


1
एक साइड नोट: installutil केवल व्यवस्थापक के रूप में काम करता है, इसलिए व्यवस्थापक के रूप में एक खोल खोलें।
१६

0

सबसे अधिक संभवत: हटाने वाली सेवा विफल हो जाती है

protected override void OnStop()

किसी सेवा को रोकते समय त्रुटि फेंकें। एक कोशिश पकड़ के अंदर चीजों को लपेटने से विलोपन त्रुटि के लिए निशान को रोका जा सकेगा

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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.