.Net 2.0 ServiceController.GetServices()

Ich habe eine website, auf der die windows-Authentifizierung aktivieren. Von einer Seite in der website, die user haben die Möglichkeit einen Dienst zu starten, hat einige Sachen mit der Datenbank.

Es funktioniert gut für mich, den Dienst zu starten, weil ich einen lokalen admin auf dem server. Aber ich hatte gerade einen user testen, und Sie nicht bekommen kann der Dienst gestartet wurde.

Meine Frage ist:


Kennt jemand eine Möglichkeit, um eine Liste der Dienste auf einem bestimmten computer nach Namen mit einem anderen windows-Konto als der, den Sie aktuell angemeldet sind?


Ich möchte wirklich nicht, um alle Benutzer zu starten, der Dienst in einer windows-Gruppe, und legen Sie Sie alle auf einen lokalen admin auf meinem IIS server.......

Hier einige der code, den ich habe:

public static ServiceControllerStatus FindService()
        {
            ServiceControllerStatus status = ServiceControllerStatus.Stopped;

            try
            {
                string machineName = ConfigurationManager.AppSettings["ServiceMachineName"];
                ServiceController[] services = ServiceController.GetServices(machineName);
                string serviceName = ConfigurationManager.AppSettings["ServiceName"].ToLower();

                foreach (ServiceController service in services)
                {
                    if (service.ServiceName.ToLower() == serviceName)
                    {
                        status = service.Status;
                        break;
                    }
                }
            }
            catch(Exception ex)
            {
                status = ServiceControllerStatus.Stopped;
                SaveError(ex, "Utilities - FindService()");
            }

            return status;
        }

Meine Ausnahme kommt aus der zweiten Zeile im try-block. Hier der Fehler:

System.InvalidOperationException:
Kann nicht öffnen Sie Dienststeuerungs-Manager auf
computer 'server.domain.com'. Diese
Betrieb erfordern möglicherweise andere
Privilegien. --->
System.ComponentModel.Win32Exception:
Zugriff verweigert --- Ende der inneren
exception stack trace --- at
System.ServiceProcess.ServiceController.GetDataBaseHandleWithAccess(String
machineName, Int32
serviceControlManaqerAccess)
System.ServiceProcess.ServiceController.GetServicesOfType(String
machineName, Int32 Diensttyp)
TelemarketingWebSite.Utilities.StartService()

Danke für die Hilfe/info

InformationsquelleAutor Miles | 2008-10-16

Schreibe einen Kommentar