System.DirectoryServices.AccountManagement.PrincipalContext interrompu après la mise à jour de Windows 10

J’utilise cette petite fonction sans problème depuis quelques années pour valider les informations d’identification de l’utilisateur. La méthode createPrincipalContext retourne un PrincipalContext avec ContextType.Machine et le nom de la machine.

 public static bool ValidateCredentials(ssortingng username, ssortingng password, ssortingng domain = null) { try { using (var principalContext = createPrincipalContext(username, domain)) { username = GetLoginInfo(username).Username; // validate the credentials if (principalContext.ValidateCredentials(username, password)) { //once valid check if account is enabled using (UserPrincipal user = UserPrincipal.FindByIdentity(principalContext, username)) { return user.Enabled.GetValueOrDefault(false); } } } } catch (PrincipalOperationException e) { traceError(e); } catch (Exception e) { traceError(e); } return false; } 

Ma machine de développement a automatiquement mis à jour la dernière version de Windows 10 récemment, et depuis lors, principalContext.ValidateCredentials a levé l’exception suivante.

System.IO.FileNotFoundException: le système ne peut pas trouver le fichier spécifié.

À part la mise à jour de la machine, rien d’autre n’a été changé. J’ai passé les derniers jours à rechercher sur Internet la cause possible du problème.

Quelqu’un at-il une expérience dans l’identification de ce qui pourrait avoir été la cause et si possible, une solution?

Un dernier Google avant que je commence à restaurer ma machine à la version précédente et j’ai trouvé ceci https://connect.microsoft.com/IE/feedback/details/1904887/windows-10-insider-preview-build-10565

le problème est dû à des entrées de registre manquantes dans HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \ Microsoft \ Windows NT \ CurrentVersion, en particulier: RegisteredOwner et RegisteredOrganization

ÉDITER : Exécutez l’Éditeur du Registre en appuyant sur Windows R et en tapant regedit.exe. Accédez à l’emplacement ci-dessus

Cliquez simplement avec le bouton droit de la souris sur CurrentVersion dans l’Éditeur du registre et sélectionnez Nouveau> Valeur de chaîne. Après avoir ajouté chaque entrée (RegisteredOwner et RegisteredOrganization), modifiez leurs valeurs. Vous pouvez utiliser votre nom d’utilisateur et votre nom de société, respectivement.

Décochez la case Préférer 32 bits dans la fenêtre des propriétés de votre projet sous l’onglet Construire. Cette case est cochée par défaut – voir la capture d’écran. Cela a résolu le problème pour moi! Si vous cochez à nouveau cette case, les exceptions que vous décrivez apparaîtront à nouveau. J’imagine que cela l’obligera à s’exécuter en mode 64 bits si possible. Par conséquent, utilisez le chemin d’access au registre 64 bits plutôt que le chemin d’access au registre WOW6432Node. Par conséquent, il trouvera les clés appropriées dont il a besoin.

Décochez la capture d’écran ‘Préférez 32 bits’

Essayez de changer votre cible de plate-forme de construction en “AnyCPU” , j’ai constaté que si ma cible de plate-forme est x86, j’ai ce problème!

Pourquoi, pourtant je n’en ai aucune idée, semble gagner 10 bogues !!!