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....

1voto

Shiraz Bhaiji Points 34901

Votre code peut s'exécuter dans le contexte de sécurité d'un utilisateur qui n'est pas autorisé à démarrer un service.

Puisque vous utilisez WCF, je suppose que vous êtes dans le contexte du SERVICE RÉSEAU.

voir : http://support.microsoft.com/kb/256299

1voto

user3586970 Points 1

J'ai surveillé sppsvc.exe à l'aide du moniteur de processus et j'ai découvert qu'il essayait d'écrire dans le répertoire HKEY_LOCAL_MACHINE \SYSTEM\WPA clé. Après avoir donné des autorisations à SERVICE RÉSEAU sur cette clé, j'ai pu démarrer le service et Windows a soudainement reconnu qu'il était à nouveau activé.

1voto

Jay Shah Points 1303

Utiliser le compte LocalSystem au lieu du compte LocalService dans le Service Installer.

Vous pouvez le faire en modifiant ci-dessous le point de vue de l'installateur de votre service :
Propriétés de Service Process Installer -> Définir le compte sur LocalSystem.

ou en modifiant le fichier designer.cs du programme d'installation de votre service :

this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;

0voto

Pieter van Ginkel Points 17057

Jetez un coup d'œil sur Process Utilities > Process monitor de http://www.sysinternals.com .

Il s'agit d'un outil qui vous permet de contrôler ce que fait un processus. Si vous surveillez ce processus de service, vous devriez voir un accès refusé quelque part, et sur quelle ressource l'accès refusé est donné.

0voto

Chris Points 1

Pour l'erreur 5, j'ai fait le contraire de la solution ci-dessus. "The first Error 5 : Access Denied error was resolved by giving permissions to the output directory to the NETWORK SERVICE account" (La première erreur 5 : Accès refusé a été résolue en donnant les permissions au compte NETWORK SERVICE pour le répertoire de sortie).

J'ai changé le mien pour un compte local, au lieu d'un compte de service réseau, et comme j'étais connecté en tant qu'administrateur, cela a fonctionné.

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