Question

J'ai écrit un programme d'installation qui installe un service Windows (A) qui doit démarrer / arrêter un autre service (B). Cependant, quand A essaie de démarrer / arrêt B, je reçois cette exception:

System.InvalidOperationException: Impossible d'ouvrir le service MyService sur l'ordinateur ''. ---> System.ComponentModel.Win32Exception: L'accès est refusé

Le programme d'installation installe le service comme un service local, et il demande des droits d'administrateur via le pop-up UAC, que j'accorde. J'ai aussi ajouté un fichier app.manifest au service qui est configuré pour demander des droits d'administration:

Et pourtant je suis toujours obtenir cette erreur.

Voici comment je commence le service (arrêt est le même, sauf qu'il appelle Stop, bien sûr):

using (Mutex mutex = new Mutex(false, "MyServiceLock"))
{
    mutex.WaitOne();

    if (ServiceExists(serviceName) == true)
    {
        using (ServiceController serviceController = new ServiceController(serviceName, "."))
        {
            serviceController.Start(); // this line throws the exception
        }
    }

    mutex.ReleaseMutex();
}

Pourquoi l'accès à ce service pourrait être refusée?

Était-ce utile?

La solution

Un service ne peut pas demander une élévation de contrôle de compte. Il me semble que l'invite UAC vous décrivez est effectivement demandé par l'installateur, pas le service. Les services normalement fonctionnent avec un compte privilégié déjà, LocalSystem par défaut. Ne vous assurer que vous configurez le service à utiliser un compte privilégié, pas un compte utilisateur restreint.

Autres conseils

En tant que test rapide, si vous ouvrez services.msc et vérifiez votre serveur « Exécuter en tant que » et entrez vos informations d'identification, l'erreur ne disparaissent? Il se peut que le LocalService n'a pas accès à arrêter d'autres services. Fournir l'autorisation rapide est probablement que l'UAC vous permet d'installer le service en premier lieu, ne pas dire à exécuter en tant qu'administrateur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top