J'appelle la fonction AdvaDesign.dll LsaEnumerateAccountRights ayant un handle de politique de LsaOpenPolicy et un SID de compte de LookupAccountName.LsaEnumerateAccountRights retourne toujours "Fichier non trouvé"
Cependant, essayez comme je le ferais, je suis toujours de retour 0xC0000034 qui après traduction par LsaNtStatusToWinError me donne "Le fichier référencé est introuvable."
Ce qui n'est pas très bien. Mon code gère cela et continue à accorder le compte SID le SeServiceLogonRight en utilisant LsaAddAccountRights, donc je sais que le handle de la politique et le SID du compte sont bien car cela serait bombe si quelque chose n'allait pas avec l'un d'entre eux.
Le résultat final est que le compte a le droit dont il a besoin donc globalement le code fonctionne.
Cependant, je l'utilise dans une action personnalisée MSI, l'installation vérifie si le compte a le droit et si ce n'est pas le cas (ou échoue comme ci-dessus), il accorde le droit et se souvient qu'il a fait dans l'état d'installation. Si une annulation se produit et qu'elle ajoute le droit, elle le supprime. Nous ne supprimons jamais dans une désinstallation car d'autres applications peuvent avoir été installées en utilisant le même compte de domaine que les services que nous utilisons.
Ainsi, le problème est lorsqu'un MSI effectue une restauration - il supprimera toujours le droit car il pense toujours l'avoir ajouté. Donc, vérifier les droits en utilisant LsaEnumerateAccountRights est utilisé pour cela - mais je ne peux tout simplement pas le faire fonctionner. Une idée - notez que j'utilise C# avec l'attribut DllImport pour exposer les fonctions Win32, et je ne suis pas le meilleur programmeur Win32 au monde ayant été Unix avant C#!
Super incroyable !! Merci pour ça! – Ajay