Ces jours ci je voulais mettre un place un service sur mon Windows avec NSSM, très pratique au demeurant, mais je me suis heurté à un problème.
Le service réclame des droits d’admin, mais impossible de lui coller au cul mon mot de passe de session Windows. Je lui donnait le bon user, le bon mot de passe mais il ne voulais rien savoir, il y avait une erreur de logon du processus au démarrage, avec ce beau code d’erreur : Error 1069.
Et en fait, depuis un long moment déjà, j’utilise un MSA (Microsoft Account) pour me logger à ma session Windows, et pour plus de facilité, j’ai activé Microsoft Hello. Alors chez moi c’est soit avec un PIN, soit avec une reco digitale.
Et c’est là que se trouve la couille : Je n’ai plus rentré mon mot de passe Windows depuis des mois. Et il existe une règle de groupe (Group Policy) qui désactive la validité de votre mot de passe enregistré après 42 jours.
Voici donc comment régler ce problème, afin de pouvoir log votre service correctement, sans craindre l’erreur 1069.
Réactiver le login par mot de passe
Dans Settings -> Accounts -> Sign-in options, l’option « Password » ne m’était plus proposée, car en dessous j’avais coché la case « For improved security, only allow Windows Hello sign-in for Microsoft accounts on this device« .
J’ai donc désactivé l’option, fermé les settings puis réouvert : paf, l’option password était réapparu.
Désactiver l’expiration du mot de passe.
Ouvrez le Group Policy Editor (Executer puis, « gpedit.msc ») et
PS : Astuce, si vous êtes sur Windows 10 ou 11 et que vous voulez activer le Group Policy Editor, dans une invite de commande ouvert en Admin (important), entrez ces deux commandes une par une :
FOR %F IN ("%SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~*.mum") DO (DISM /Online /NoRestart /Add-Package:"%F")
FOR %F IN ("%SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~*.mum") DO (DISM /Online /NoRestart /Add-Package:"%F")
Bref, une fois le Group Policy Editor ouvert, allez dans
Computer Configuration -> Windows Settings -> Security Settings -> Account Policies -> Password Policy.
Sur la droite vous aurez l’option « Maximum password age » qui est normalement à 42 jours, il faudra la mettre à 0, tout simplement.
Puis, on ne sait jamais, on va vérifier au passage que l’user a bien les droits de logon as service. Ca serait con quand même.
Toujours dans le même Group Policy Editor, allez dans
Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> User Rights Assignement
Vérifiez que votre utilisateur est bien enregistré dans l’option « Log on as a service ».
Réactiver la validité du mot de passe
C’est la partie la plus simple. Déconnectez vous de votre session avec un bon logout des familles, et reconnectez vous pour cette fois ci avec votre mot de passe.
Et paf. La validité du mot de passe a été réactivé, et cette fois-ci, elle n’expirera plus. Le service en question ne m’a plus embêté et a bien accepté le login de mon compte Windows.