त्रुटि 5: विंडोज़ सेवा शुरू करते समय पहुंच अस्वीकृत


97

मुझे यह त्रुटि तब हो रही है जब मैंने C # में बनाई गई Windows सेवा शुरू करने का प्रयास किया:

वैकल्पिक शब्द

मेरा कोड अब तक:

private ServiceHost host = null;

public RightAccessHost()
{
    InitializeComponent();
}

protected override void OnStart(string[] args)
{
    host = new ServiceHost(typeof(RightAccessWcf));
    host.Open();
}

protected override void OnStop()
{
    if (host != null)
        host.Close();
    host = null;
}

अपडेट # 1

मैंने खाता नेटवर्क सेवा को अनुमति प्रदान करके उपरोक्त समस्या को हल कर दिया है, लेकिन अब मुझे एक और समस्या है:

वैकल्पिक शब्द

अद्यतन # 2

सेवा शुरू नहीं की जा सकती। System.InvalidOperationException: Service 'RightAccessManagementWcf.RightAccessWcf' में शून्य एप्लिकेशन (गैर-अवसंरचना) समापन बिंदु हैं। ऐसा इसलिए हो सकता है क्योंकि आपके एप्लिकेशन के लिए कोई कॉन्फ़िगरेशन फ़ाइल नहीं मिली, या क्योंकि सेवा नाम से मेल खाने वाला कोई सेवा तत्व कॉन्फ़िगरेशन फ़ाइल में नहीं मिल सकता है, या इसलिए कि कोई अंतिम बिंदु सेवा तत्व में परिभाषित नहीं किए गए थे। System.ServiceModel.Description.DispatcherBuilder.EnsureThereAreNonMexEndpoint (ServiceDescription विवरण) at System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost (सेवा विवरणों, ServiceHostBase serviceHost) को System.ServiceMods। TimeSpan टाइमआउट) System.ServiceModel.Channels.CommunicationObject पर।


2
आपकी दूसरी समस्या अकेले उस संदेश से हल करना आसान नहीं है। आपको अपने ईवेंट लॉग में देखना होगा और देखना होगा कि वास्तविक त्रुटि क्या है।
मैट एलेन

1
जाँच करें कि क्या सिस्टम एक्ज़ॉउन में फ़ोल्डर की पहुँच है।
डेवलपर

जवाबों:


116

मुझे लगता है कि यह पोस्ट पुरानी है, लेकिन इसका कोई चिन्हित समाधान नहीं है और मैं सिर्फ यह बताना चाहता हूं कि मैंने इसे कैसे हल किया।

पहली Error 5: Access Deniedत्रुटि NETWORK SERVICEखाते में आउटपुट निर्देशिका को अनुमति देकर हल की गई थी ।

दूसरी Started and then stoppedत्रुटि एक सामान्य संदेश लगती है जब कुछ सेवा में खराबी होती है। वास्तविक त्रुटि संदेश के लिए ईवेंट व्यूअर (विशेष रूप से 'विंडोज लॉग्स> एप्लीकेशन') की जांच करें।

मेरे मामले में, यह app.config में एक खराब सेवा कॉन्फ़िगरेशन सेटिंग थी।


7
मैंने एक्सप्लोरर, राइट क्लिकिंग, प्रॉपर्टीज़, सिक्योरिटी का उपयोग करके फ़ोल्डर में नेविगेट करके अनुमतियों को संशोधित किया, और फिर उपयोगकर्ता नामों की सूची में नेटवर्क सेवा खाते के लिए सही अनुमतियों को असाइन किया।
जस्टिन स्काइल्स

"त्रुटि 5" के बारे में मेरे मामले में, यह था कि नेटवर्क सेवा ने निष्पादन योग्य के फ़ोल्डर में अधिकारों का उपयोग नहीं किया है। चूंकि यह विकास के लिए है, मैं फ़ाइलों को फ़ोल्डर प्रोग्राम फ़ाइल में नहीं रखना चाहता था, लेकिन एक साझा फ़ोल्डर जिसे मैं देव मशीन से फ़ाइलों को कॉपी कर सकता था। नेटवर्क सेवा देते हुए पढ़ें / छूट / सूची का अधिकार पर्याप्त रूप से अच्छा होना चाहिए।
ZZZ

5
मैं अपने बिन \ "डिबग फोल्डर और कार्यों के लिए LOCAL सेवा" और "नेटवर्क सेवा"
जोड़ता हूं

3
बस लोगों को एक नोट: यदि बदलती अनुमतियां आपकी समस्या को ठीक नहीं करती हैं, तो त्रुटियों के लिए इवेंट व्यूअर की जांच करना सुनिश्चित करें। मेरे पास पूरी तरह से असंबंधित SQL त्रुटि थी जो सेवा को शुरू करने से रोकती थी लेकिन फिर भी मुझे "त्रुटि 5: प्रवेश निषेध है।" त्रुटि।
dtryan

"इवेंट व्यूअर" के बारे में नोट के लिए धन्यवाद - मेरे साथ समान, असंबंधित त्रुटि "समापन बिंदु नहीं मिला", लेकिन "एक्सेस अस्वीकृत (5)" के रूप में
अभिनीत

26

कंप्यूटर -> प्रबंधित -> सेवा -> [आपकी सेवा] गुण। फिर खाता जानकारी के साथ टैब। उन सेटिंग्स के साथ खेलें, जैसे व्यवस्थापक खाते के साथ सेवा चलाएँ।

वो मेरे लिए किया गया।

EDIT: समस्या यह भी हो सकती है कि, अधिकांश सेवाएँ LOCAL SERVICEया LOCAL SYSTEMखातों के रूप में चलाई जाती हैं। अब जब आप C:/my-admin-dir/service.exeउन खातों के साथ चलते हैं, लेकिन उन्हें उस निर्देशिका में कुछ भी निष्पादित करने की अनुमति नहीं है, तो आपको मिलेगा error 5। तो सेवा के निष्पादन योग्य का पता लगाएं, निर्देशिका को आरएमबी -> गुण -> सुरक्षा और सुनिश्चित करें कि सेवा जिस खाते के साथ चलती है, वह उन उपयोगकर्ताओं की सूची में है जो निर्देशिका पर पूर्ण नियंत्रण रखने के लिए मिश्र हैं।


21

इसने मेरे लिए काम किया।

  1. निष्पादन योग्य सेवा वाले शीर्ष-स्तरीय फ़ोल्डर पर राइट-क्लिक करें। गुण पर जाएं
  2. "सुरक्षा" टैब पर जाएं
  3. "EDIT" पर क्लिक करें
  4. "ADD" पर क्लिक करें
  5. "सिस्टम" नाम दर्ज करें, ठीक क्लिक करें
  6. सिस्टम उपयोगकर्ता को हाइलाइट करें, और "पूर्ण नियंत्रण" के आगे ALLOW चेक बॉक्स पर क्लिक करें।
  7. दो बार ओके पर क्लिक करें

11
"सिस्टम" ने मेरे लिए काम नहीं किया, मैंने सिर्फ जुआ खेला और "सेवा" की कोशिश की - जिसने चाल चली।
Exter

4
"सेवा" को जोड़ना और इसे "पूर्ण नियंत्रण" देना मेरे लिए काम किया - विंडोज 10.
फ्रेड्रिक

चूंकि मेरा ServiceProcessInstaller का खाता गुण (मेरे ProjectInstaller में) LocalService पर सेट था, इसलिए मैंने स्थानीय सेवा खाते को पूर्ण अनुमति प्रदान कर दी और उसने यह चाल चली!
डेव

14

मुझे भी यही त्रुटि मिली, यह सेवा> गुण> लॉग ऑन> लॉग ऑन पर राइट क्लिक द्वारा हल किया गया: स्थानीय सिस्टम खाता।


धन्यवाद। मुझे tor.exe --service प्रारंभ के साथ एक समस्या थी, और अब यह एक आकर्षण की तरह काम करता है!
अरमान करीमी

मेरे लिए काम किया। हालांकि, इस कार्यक्रम को निर्दिष्ट करने के लिए वैसे भी है?
सिसिर

समझ गया। राइट-क्लिक करें serviceProcessInstaller -> गुण -> खाता और डिफ़ॉल्ट "उपयोगकर्ता" के बजाय इसे "LocalSystem" पर सेट करें। सेवा और वॉयला स्थापित करें।
सिसिर

10

Path to executableएक वास्तविक निष्पादन योग्य (राइट क्लिक सेवा -> गुण -> सामान्य टैब) के बिंदुओं को सुनिश्चित करें । शक्तियाँ (और sc.exe) के माध्यम से आप एक वास्तविक निष्पादन योग्य ... अहम की ओर इशारा किए बिना एक सेवा स्थापित कर सकते हैं।


मैंने गलती से .exe फ़ाइल के बजाय एक फ़ोल्डर छोड़ दिया है। इस समस्या को ठीक करने के लिए मुझे सेवा को पूरी तरह से हटाने और सही सेवा को पुनर्स्थापित करने के लिए सर्वर को फिर से शुरू करना होगा। फिर यह एक आकर्षण की तरह शुरू होता है। इस पोस्ट के लिए Thanx।
होनज़ा पी।

तुमने मुझे बचाया! निष्पादन योग्य पूर्ण पथ के बजाय फ़ोल्डर असाइन करना ... अरघह! बेहतर दिखना चाहिए था ...
ilter

9

मुझे हल मिल गया:

1. Go to local service window(where all services found)
2. Just right click on your service name: 
3. click on "properties" 
4. go to "log on" tab
5. select "local system account"
6. click "ok"

अब आप सेवा शुरू करने का प्रयास कर सकते हैं।


1
मेरे पास पहले से ही "स्थानीय सिस्टम खाता" चयनित है और अभी भी संदेश प्राप्त कर रहा है।
user2568374

5

मुझे यह त्रुटि मिल रही थी क्योंकि मैंने यहां से स्वीकृत उत्तर को गलत बताया था: निष्पादन योग्य से विंडोज सेवा बनाएं

sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"

के लिए <path_to_service_executable>, मैं निष्पादन योग्य फ़ोल्डर के पथ का उपयोग कर रहा था, जैसे C:\Folder

यह निष्पादन योग्य का मार्ग होना चाहिए , जैसे C:\Folder\Executable.exe


4

मेरे मामले में निम्नलिखित की जाँच नहीं की गई थी।

यहां छवि विवरण दर्ज करें


2
मेरे जैसे अन्य पाठकों के लिए: यह स्क्रीनशॉट सेवा गुण विंडो का हिस्सा है! ओपन सर्विसेज विंडो (रन: Services.msc) और संदर्भ मेनू से गुण चुनें जो सेवा पर राइट-क्लिक करने के बाद दिखाई देते हैं!
मोहम्मड़ Moha ’

3

मेरे लिए - जिस फ़ोल्डर से सेवा को चलाना था, और उसमें मौजूद फ़ाइलों को विंडोज "एनक्रिप्ट" विकल्प का उपयोग करके एन्क्रिप्ट किया गया था। उस और - वसीला को हटाना!


यह मेरे लिए मुद्दा बन गया - मैं जिस सर्वर का उपयोग कर रहा था उस पर विदूषक sysadmins ने सभी निर्देशिकाओं को डिफ़ॉल्ट रूप से NTFS एन्क्रिप्शन बनाने के लिए कुछ घुंडी लगाई थी, और इसलिए LocalSystem के पास वास्तव में उन्हें पढ़ने के लिए एन्क्रिप्शन कुंजी नहीं है ...
केजे तानकटसिडिस

3

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

public partial class Service1 : ServiceBase
{
    ServiceHost host;
    Thread hostThread;
    public Service1()
    {
        InitializeComponent();
         hostThread= new Thread(new ThreadStart(StartHosting));

    }

    protected override void OnStart(string[] args)
    {
        hostThread.Start();
    }

    protected void StartHosting()
    {
        host = new ServiceHost(typeof(WCFAuth.Service.AuthService));
        host.Open();
    }

    protected override void OnStop()
    {
        if (host != null)
            host.Close();
    }
}

3

यदि आप एक पहुंच अस्वीकृत त्रुटि कोड 5 हैं। तो संभवतः आपके कोड में आपकी सेवा सिस्टम में कुछ फाइलों के साथ बातचीत करने की कोशिश कर रही है जैसे लॉग फाइल में लिखना

सेवाओं के गुणों को खोलें log onटैब का चयन करें और डेस्कटॉप के साथ बातचीत करने की अनुमति देने के लिए विकल्प की जांच करें, डेस्कटॉप के साथ बातचीत करने के लिए सेवा की अनुमति दें पर क्लिक करें


3

मेरे मामले में, मुझे उस फ़ोल्डर में 'समूह या उपयोगकर्ता नाम' की सूची में 'प्रमाणित उपयोगकर्ता' जोड़ना था जहाँ निष्पादन योग्य स्थापित किया गया था।


3

इस त्रुटि का एक कारण आपके स्थानीय फ़ोल्डर में अपर्याप्त अनुमतियाँ (प्रामाणिक उपयोगकर्ता) हैं। 'प्रमाणित उपयोगकर्ता' की अनुमति देने के लिए, अपने फ़ोल्डर के गुणों में सुरक्षा टैब खोलें, संपादित करें और 'प्रमाणित उपयोगकर्ता समूह' जोड़ें और परिवर्तन लागू करें।

एक बार यह हो जाने के बाद मैं नेटवर्क सेवा खाते के माध्यम से भी सेवाएँ चलाने में सक्षम था (इससे पहले मैं केवल स्थानीय प्रणाली खाते के साथ ही चलने में सक्षम था)।


2

मेरे पास OWIN और TopShelf का उपयोग करके होस्ट की गई विंडोज़ सेवा थी। मैं इसे शुरू नहीं कर पा रहा था। समान त्रुटि - "पहुंच अस्वीकृत 5"

मैंने अपने बिन / डिबग को सभी परमिट देना समाप्त कर दिया।

समस्या अभी भी हल नहीं हुई थी।

इसलिए मैंने इवेंट लॉग में एक नज़र डाली और यह पता चला कि द Microsoft.Owin.Host.HttpListener डाली क्लास लाइब्रेरी में शामिल नहीं था जिसमें ओविन स्टार्ट अप क्लास था।

तो, कृपया सुनिश्चित करें कि आप परमिट में आने से पहले मूल कारण की पहचान करने के लिए ईवेंट लॉग की जांच करें, आदि।


2
अच्छा बिंदु - "एक्सेस अस्वीकृत" त्रुटि का अनुमतियों से कोई लेना-देना नहीं है; हमेशा इवेंट व्यूअर में एप्लिकेशन लॉग की जांच करें।
mhenry1384

नमस्ते, मैं भी इस पर जाँच कर रहा हूँ, जहाँ `। \ लॉग्स 'पथ है मैं इस topshelf से लॉग इन कर रहा हूँ, लेकिन इसके नहीं
ट्रांसफार्मर

1

आपका कोड उस उपयोगकर्ता के सुरक्षा संदर्भ में चल सकता है जिसे सेवा शुरू करने की अनुमति नहीं है।

चूंकि आप डब्ल्यूसीएफ का उपयोग कर रहे हैं, इसलिए मैं अनुमान लगा रहा हूं कि आप नेटवर्क्स सेवा के संदर्भ में हैं।

देखें: http://support.microsoft.com/kb/256299


1
मैंने अपनी आउटपुट डाइरेक्टरीज़ पर "LOCAL SERVICE" और "NETWORK SERVICE" अधिकार दिए
Kris-I

आपको सिस्टम सेवाओं, support.microsoft.com/kb/256345/EN-US के
शिराज भाईजी

1

सेवा इंस्टालर में लोकल सर्विस खाते के बजाय लोकल सिस्टम खाते का उपयोग करें।

आप इसे अपने सेवा इंस्टॉलर के डिज़ाइन दृश्य में नीचे परिवर्तन करने से भी कर सकते हैं:
सेवा प्रक्रिया इंस्टॉलर के गुण -> स्थानीय सिस्टम पर खाता सेट करें।

या अपने सर्विस इंस्टॉलर की डिज़ाइनर .cs फ़ाइल में नीचे परिवर्तन करके:

this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;

1

serviceService.msc पर राइट क्लिक करें और सेलेक्ट करें property

आपको Path to executableC: \ Users \ Me \ Desktop \ Project \ Tor \ Tor \ tor.exe जैसे एक फ़ोल्डर पथ दिखाई देगा

C: \ Users \ Me \ Desktop \ Project \ Tor पर नेविगेट करें और Tor पर राइट क्लिक करें।

का चयन करें property, security, editऔर उसके बाद add। टेक्स्ट फ़ील्ड में LOCAL SERVICE, ठीक पर क्लिक करें और फिर बॉक्स को चेक करेंFULL CONTROL

addफिर से क्लिक करें फिर दर्ज करें NETWORK SERVICE, क्लिक करें ok, बॉक्स चेक करेंFULL CONTROL

फिर ठीक पर क्लिक करें (नीचे)


0

Http://www.sysinternals.comProcess Utilities > Process monitor से देख सकते हैं ।

यह उपकरण है जो आपको यह देखने की अनुमति देता है कि एक प्रक्रिया क्या करती है। यदि आप इस सेवा प्रक्रिया की निगरानी करते हैं, तो आपको कहीं न कहीं उपयोग से वंचित होना चाहिए, और जिस संसाधन से इनकार किया गया है, उस तक पहुँच दी जानी चाहिए।


0

त्रुटि 5 के लिए, मैंने उपरोक्त समाधान के विपरीत किया। "पहली त्रुटि 5: नेटवर्क सेवा खाते में आउटपुट निर्देशिका को अनुमति देकर पहुंच अस्वीकृत त्रुटि का समाधान किया गया था।"

मैंने नेटवर्क सेवा खाते के बजाय मेरा खाता स्थानीय खाते में बदल दिया, और क्योंकि मैं व्यवस्थापक के रूप में लॉग इन किया था


0

यदि आप सर्वर मशीन पर यह त्रुटि प्राप्त कर रहे हैं, तो उस फ़ोल्डर का उपयोग करने का प्रयास करें, जिसे आपने वास्तविक विंडोज़ सेवा प्राप्त की थी। आपको सुरक्षा टैब पर जाना चाहिए और उपयोगकर्ता के रूप में स्थानीय सेवा का चयन करना चाहिए और पूर्ण एक्सेस देना चाहिए। आपको एक्सई के लिए भी यही करना चाहिए।


0

मैंने प्रक्रिया मॉनिटर का उपयोग करते हुए sppsvc.exe की निगरानी की है और पता चला है कि यह HKEY_LOCAL_MACHINE \ SYSTEM \ WPA कुंजी पर लिखने की कोशिश कर रहा था। इस कुंजी पर NETWORK सेवा को अनुमति देने के बाद, मैं सेवा शुरू करने में सक्षम था और विंडोज ने अचानक पहचाना कि यह फिर से सक्रिय हो गया है।


0

मैंने गलती से अपनी सेवा को चलाने के लिए सेट कर दिया क्योंकि Local serviceसमाधान स्विच करना थाLocal System


0

धमाके के बाद मेरे डेस्क के खिलाफ कुछ घंटों के लिए यह पता लगाने की कोशिश कर रहा था, किसी तरह मेरी "मुख्य" विधि इसे कोड से खाली कर दिया गया!

ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] 
{ 
    new DMTestService()
};
ServiceBase.Run(ServicesToRun);

अन्य समाधान मैंने पाया:

  • .NET फ्रेमवर्क को 4.0 में अपडेट करना
  • आरंभिक नाम के अंदर सेवा नाम सुनिश्चित करना () इंस्टॉलर सेवा नाम संपत्ति से मेल खाता है

    private void InitializeComponent()
    ...
    this.ServiceName = "DMTestService";
  • और एक अच्छा सर्वर पुनरारंभ चोट नहीं करता है

Szhlopp



0

मेरे पास यह मुद्दा आज एक ऐसी सेवा पर था जिसे मैं विकसित कर रहा था, और इस प्रश्न पर किसी भी अन्य सुझाव ने काम नहीं किया। मेरे मामले में, मुझे उस फ़ोल्डर में एक गायब .dll निर्भरता थी जहां से सेवा चलती थी।

जब मैंने निर्भरताएँ जोड़ीं, तो समस्या दूर हो गई।


0

मेरे मामले में मैंने प्रोजेक्ट को डेस्कटॉप पर रखा और डेस्कटॉप तक पहुँचने के लिए हमें फ़ोल्डर की अनुमति देनी पड़ी, इसलिए मैंने अपने प्रोजेक्ट फ़ोल्डर को C: \ directory में स्थानांतरित कर दिया, अब यह एक आकर्षण की तरह काम कर रहा है।


0

मुझे नहीं पता कि क्या मेरा जवाब कई लोगों के लिए समझ में आता है, लेकिन मुझे भी उसी मुद्दे का सामना करना पड़ा और समाधान बहुत सरल था। मुझे केवल इतना करना था कि प्रोग्राम को खोलना था जिसे मैं एक प्रशासक के रूप में कोड चलाता था। (राइट क्लिक करें -> व्यवस्थापक के रूप में चलाएँ)।

बस यही था।


0

जैसा कि त्रुटि पॉपअप बताता है कि यह अनुमति से संबंधित है। इसलिए सेवा को "लोकल सिस्टम" खाते के रूप में चलाएं।

ऐसा करने के लिए, डिफ़ॉल्ट के बजाय राइट क्लिक करें serviceProcessInstaller -> Properties -> Accountऔर इसे सेट करें । सेवा और वॉयला स्थापित करें।"LocalSystem""User"


यह एक सिद्ध कार्य है और आसपास कोई काम नहीं है। क्या नीचे का मतदाता दूसरों को समझने के लिए नापसंद होने का कारण बता सकता है
सीसिर

0

विस्तृत त्रुटि संदेश के लिए विंडो इवेंट लॉग की जाँच करें। मैंने इवेंट लॉग चेक करने के बाद इसे हल किया।


-1

मेरे पास इस मुद्दे पर एक सेवा थी जिसे मैं तैनात कर रहा था, और इस प्रश्न पर किसी भी अन्य सुझाव ने काम नहीं किया। मेरे मामले में, यह इसलिए था क्योंकि मेरा .config (xml) वैध नहीं था। जब मैंने क्वालिफ से लेकर ठेस तक की नकल की तो मैंने एक कॉपी और पेस्ट त्रुटि की।

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