.Net 2.0 ServiceController.GetServices()

J'ai un site qui a de l'authentification windows activer sur elle. À partir d'une page dans le site web, les utilisateurs ont la possibilité de démarrer un service qui fait des trucs avec la base de données.

Il fonctionne très bien pour moi de démarrer le service parce que je suis un administrateur local sur le serveur. Mais j'ai juste eu un test d'utilisateurs et ils ne peuvent pas obtenir le démarrage du service.

Ma question est:


Personne ne sait de façon à obtenir une liste de services sur un ordinateur spécifié par le nom à l'aide d'un autre compte windows que celui auquel ils sont actuellement connecté avec?


Je ne veux vraiment pas à ajouter tous les utilisateurs qui ont besoin de démarrer le service dans un groupe windows et de les mettre tous à un admin sur mon serveur IIS.....

Voici le code que j'ai:

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;
        }

Mon exception de la deuxième ligne dans le bloc try. Voici l'erreur:

Système.InvalidOperationException:
Impossible d'ouvrir le Gestionnaire de Contrôle de Service sur
l'ordinateur "server.domain.com'. Cette
l'opération peut nécessiter d'autres
les privilèges. --->
Système.ComponentModel.Win32Exception:
Accès refusé --- Fin de l'intérieure
trace de pile d'exception --- à
Système.ServiceProcess.ServiceController.GetDataBaseHandleWithAccess(String
machineName, Int32
serviceControlManaqerAccess) à
Système.ServiceProcess.ServiceController.GetServicesOfType(String
machineName, Int32 serviceType) à
TelemarketingWebSite.Utilitaires.StartService()

Merci pour l'aide/info

OriginalL'auteur Miles | 2008-10-16