.Net 2.0 ServiceController.GetServices ()

Eu tenho um site que tem autenticação do Windows habilitar nele. Em uma página do site, os usuários podem iniciar um serviço que faz algumas coisas com o banco de dados.

Funciona bem para mim iniciar o serviço porque sou um administrador local no servidor. Mas eu tive um usuário testá-lo e ele não pode iniciar o serviço.

Minha pergunta é:

Alguém sabe uma maneira de obter uma lista de serviços em um computador especificado por nome, usando uma conta do Windows diferente daquela com a qual eles estão conectados no momento?

Eu realmente não quero adicionar todos os usuários que precisam iniciar o serviço em um grupo do Windows e configurá-los para um administrador local no meu servidor IIS .....

Aqui estão alguns dos códigos que eu tenho:

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

Minha exceção vem da segunda linha no bloco try. Aqui está o erro:

System.InvalidOperationException: Não é possível abrir o Service Control Manager no computador 'server.domain.com'. Esta operação pode exigir outros privilégios. ---> System.ComponentModel.Win32Exception: acesso negado --- Fim do rastreamento da pilha de exceção interna --- em System.ServiceProcess.ServiceController.GetDataBaseHandleWithAccess (String machineName, Int32 serviceControlManaqerAccess) em System.ServiceProcess.ServiceController.GetServicesOfType (String machineName, Int32 serviceType) em TelemarketingWebSite.Utilities.StartService ()

Obrigado pela ajuda / informação

questionAnswers(2)

yourAnswerToTheQuestion