ChangeServiceConfig problème en définissant les informations d'identification d'ouverture de session
-
03-07-2019 - |
Question
J'ai ce problème étrange - J'appelle ChangeServiceConfig
sur un service nouvellement installé (je CreateService
moi-même) afin de fournir les informations d'identification de connexion, mais function réussit (retourne TRUE), si j'essaie de démarrer le service, il échoue avec un 1069 (échec de la connexion). Si je vais dans le gestionnaire de service et que je modifie les informations d'identification à la main (je peux voir que le nom d'utilisateur est correct, mais bien sûr, je ne peux pas voir le mot de passe), alors tout va bien et tout va bien.
L'appel lui-même est trivial:
ChangeServiceConfig (hService, SERVICE_NO_CHANGE, SERVICE_NO_CHANGE, SERVICE_NO_CHANGE, NULL, NULL, NULL, strUser, strPassword, NULL);
Avez-vous une idée de l'endroit où je devrais chercher et de ce qui pourrait ne pas être faux?
Merci d'avance.
La solution
Le compte d'utilisateur doit explicitement disposer des droits lui permettant de se connecter en tant que service ( SeServiceLogonRight
). De nombreux utilisateurs, y compris les administrateurs informatiques, peuvent ne pas avoir cet indicateur défini et vous devrez peut-être le configurer manuellement. Le panneau de configuration des services Windows s’effectue silencieusement dans les coulisses lorsque vous l’utilisez pour configurer des services.
J'ai également de vagues souvenirs embrumés sur la nécessité de qualifier complètement le nom d'utilisateur. Il doit être au format DOMAIN \ Nom d'utilisateur
- S'il s'agit d'un compte local, vous devez spécifier . \ Nom d'utilisateur
ou rechercher le nom de l'ordinateur et utiliser MACHINENAME \ Nom d'utilisateur.