120 votes

Erreur 5 : Accès refusé lors du démarrage d'un service Windows

J'obtiens cette erreur lorsque j'essaie de démarrer un service Windows que j'ai créé en C# :

alt text

Mon code jusqu'à présent :

private ServiceHost host = null;

public RightAccessHost()
{
    InitializeComponent();
}

protected override void OnStart(string[] args)
{
    host = new ServiceHost(typeof(RightAccessWcf));
    host.Open();
}

protected override void OnStop()
{
    if (host != null)
        host.Close();
    host = null;
}

Mise à jour n° 1

J'ai résolu le problème ci-dessus en accordant des autorisations au compte SERVICE DE RÉSEAU mais j'ai maintenant un autre problème :

alt text

Mise à jour n°2

Le service ne peut pas être démarré. System.InvalidOperationException : Le service 'RightAccessManagementWcf.RightAccessWcf' n'a aucun point de terminaison d'application (non-infrastructure). Cela peut être dû au fait qu'aucun fichier de configuration n'a été trouvé pour votre application, qu'aucun élément de service correspondant au nom du service n'a pu être trouvé dans le fichier de configuration, ou qu'aucun point d'extrémité n'a été défini dans l'élément de service. at System.ServiceModel.Description.DispatcherBuilder.EnsureThereAreNonMexEndpoints(ServiceDescription description) at System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost(ServiceDescription description, ServiceHostBase serviceHost) at System.ServiceModel.ServiceHostBase.InitializeRuntime() at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) at RightAccessHosting.RightAccessHost.OnStart(String[] args) in C:\Users....

128voto

Justin Skiles Points 2885

Je sais que ce message est ancien, mais il n'y a pas de solution toute faite et je voulais juste dire comment j'ai résolu ce problème.

Le premier Error 5: Access Denied a été résolue en donnant les permissions au répertoire de sortie à l'application NETWORK SERVICE compte.

Le deuxième Started and then stopped semble être un message générique indiquant qu'une erreur s'est produite dans le service. Consultez l'observateur d'événements (en particulier "Windows Logs > Application") pour connaître le véritable message d'erreur.

Dans mon cas, il s'agissait d'un mauvais paramètre de configuration du service dans app.config.

32voto

Mike de Klerk Points 1606

Ordinateur -> Gérer -> Service -> Propriétés de [votre service]. Puis l'onglet avec les informations de compte. Jouez avec ces paramètres, comme exécuter le service avec un compte administrateur ou autre.

C'est ce que j'ai fait.

EDIT : Ce qui peut également poser problème, c'est que la plupart des services sont exécutés en tant que LOCAL SERVICE o LOCAL SYSTEM des comptes. Maintenant, lorsque vous exécutez C:/my-admin-dir/service.exe avec ces comptes mais qu'ils ne sont pas autorisés à exécuter quoi que ce soit dans ce répertoire, vous obtiendrez error 5 . Localisez donc l'exécutable du service, RMB le répertoire -> Propriétés -> Sécurité et assurez-vous que le compte avec lequel le service est exécuté, est dans la liste des utilisateurs qui sont autorisés à avoir un contrôle total sur le répertoire.

23voto

Casey Points 19286

Cela a fonctionné pour moi.

  1. Cliquez avec le bouton droit de la souris sur le dossier de premier niveau contenant l'exécutable du service. Aller dans Propriétés
  2. Onglet "Sécurité
  3. Cliquez sur "EDIT"
  4. Cliquez sur "AJOUTER"
  5. Saisir le nom "SYSTEM", cliquer sur OK
  6. Mettez en évidence l'utilisateur SYSTEM et cliquez sur la case à cocher ALLOW à côté de "Full control" (contrôle total)
  7. Cliquez deux fois sur OK

19voto

bump Points 1398

Assurez-vous que le Path to executable pointe vers un exécutable réel (clic droit sur le service -> Propriétés -> onglet Général). Via powershell (et sc.exe), vous pouvez installer un service sans le faire pointer vers un exécutable réel... ahem.

17voto

user2791824 Points 1

J'ai également obtenu la même erreur, qui a été résolue par Cliquez avec le bouton droit de la souris sur le service > Propriétés > Connexion > Connectez-vous en tant que : Compte système local.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X