2013-01-07 11 views
11

Sto utilizzando il codice C# per avviare e arrestare la funzione della finestra, ma sto ricevendo questo errore.System.ComponentModel.Win32Exception: Accesso negato Errore

System.ComponentModel.Win32Exception: Access is denied 

Per favore aiutatemi.

My Code:

public void StartService(string serviceName, int timeoutMilliseconds) 
    { 
     ServiceController service = new ServiceController(serviceName); 
     try 
     { 
      TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds); 

      service.Start(); 
      service.WaitForStatus(ServiceControllerStatus.Running, timeout); 
      lblMessage.Text = "Service Started."; 
     } 
     catch (Exception ex) 
     { 
      //lblMessage.Text = "Error in Service Starting."; 
      lblMessage.Text = ex.ToString(); 
     } 
    } 
+1

Sei sicuro che l'account utente disponga delle autorizzazioni necessarie per avviare un servizio? Puoi pubblicare la traccia dello stack? –

+0

Vedere anche qui: http://stackoverflow.com/questions/6070295/starting-a-service-in-asp-net-c-with-the-right-permissions –

+0

Stack Trace System.InvalidOperationException: impossibile aprire aspnet_state servizio su computer ".". ---> System.ComponentModel.Win32Exception: Accesso negato --- Fine della traccia dello stack di eccezioni interne --- su System.ServiceProcess.ServiceController.GetServiceHandle (Int32 desiredAccess) su System.ServiceProcess.ServiceController.Start (String [] args) su System.ServiceProcess.ServiceController.Start() su _Default.StartService (String serviceName, Int32 timeoutMilliseconds) – Mahesh

risposta

10

Assicurarsi considerazione l'identità del pool di applicazioni sul server dispone di autorizzazioni per avviare tale servizio. Funziona sul tuo ASP.NET Development Server perché viene eseguito sotto il tuo account utente (admin) In una configurazione IIS predefinita, questo account è Network service o ApplicationPoolIdentity (a seconda della versione di IIS) e di solito non è in grado di gestire i servizi.

Quindi, modificare l'account del pool in Gestione IIS (Pool di applicazioni/NameOfYourYourPool/Impostazioni avanzate). Puoi utilizzare un account integrato o utilizzare uno dei tuoi domini.

apppool

3

eseguire la vostra VS in modalità amministratore e caricare il vostro sviluppatore project.Open VS cmd nella amministratore mode.Give corretta username con il nome di dominio del computer come nomedominio \ username.Hope che funzionerà.