2013-01-07 5 views
11

Ich verwende C# -Code zum Starten und Stoppen des Fensters dient, aber ich bekomme diesen Fehler.System.ComponentModel.Win32Exception: Zugriff verweigert Fehler

System.ComponentModel.Win32Exception: Access is denied 

Bitte helfen Sie mir.

Mein 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

Sind Sie sicher, dass das Benutzerkonto die erforderlichen Berechtigungen zum Starten eines Dienstes hat? Können Sie den Stack-Trace veröffentlichen? –

+0

Siehe auch hier: http://stackoverflow.com/questions/6070295/start-a-service-in-asp-net-c-with-the-right-permissions –

+0

Die Stack-Trace ist System.InvalidOperationException: kann nicht geöffnet werden aspnet_state Dienst am Computer ".". ---> System.ComponentModel.Win32Exception: Zugriff wird verweigert --- Ende der inneren Ausnahmestapelüberwachung --- bei System.ServiceProcess.ServiceController.GetServiceHandle (Int32 sinedAccess) bei System.ServiceProcess.ServiceController.Start (String [] args) bei System.ServiceProcess.ServiceController.Start() bei _Default.StartService (String serviceName, Int32 timeoutMilliseconds) – Mahesh

Antwort

10

Stellen Sie sicher, Ihr Anwendungspoolidentitätskonto auf Ihrem Server über Berechtigungen diesen Dienst zu starten. Es funktioniert auf Ihrem ASP.NET Development Server, da es unter Ihrem Benutzerkonto (admin) ausgeführt wird. In einer Standard-IIS-Konfiguration ist dieses Konto Network Service oder ApplicationPoolIdentity (abhängig von der IIS-Version) und kann Dienste normalerweise nicht verwalten.

Ändern Sie das Poolkonto im IIS-Manager (Anwendungspools/NameOfYourYourPool/Erweiterte Einstellungen). Sie können ein integriertes Konto verwenden oder eine Ihrer Domain verwenden.

apppool

3

Führen Sie Ihre VS im Administrator-Modus und laden Sie Ihre project.Open Entwickler VS cmd in Administrator mode.Give richtigen Benutzernamen mit Computer-Domain-Namen wie domainname \ username.Hope wird es funktionieren.