C # - не может использовать PrincipalContext (ContextType.Machine) в Windows 10: система не может найти указанный файл

Следующее работает на нескольких серверных версиях Windows, а также на Windows 7 pro и других, но на Windows 10 (как минимум на двух машинах) я получаю сообщение об ошибке: «Система не может найти указанный файл. \ R \ n». Источник ошибки «Active Directory»

System.IO.FileNotFoundException: система не может найти указанный файл.

Трассировки стека:

   at System.DirectoryServices.AccountManagement.UnsafeNativeMethods.IADs.Get(String bstrName)
   at System.DirectoryServices.AccountManagement.CredentialValidator.BindSam(String target, String userName, String password)
   at System.DirectoryServices.AccountManagement.CredentialValidator.Validate(String userName, String password)
   at System.DirectoryServices.AccountManagement.PrincipalContext.ValidateCredentials(String userName, String password)
   at IsValidWindowsUser(String userName, String password) in MembershipProvider.cs:line xxx

Ниже приведен минимальный объем кода, который необходим для вызова ошибки. В этом случае я использую ValidateCredentials (), но другие операции, такие как PrincipalSearches, также завершаются с той же ошибкой.

Я подтвердил, что учетные данные действительны с использованием LogonUser ();https://msdn.microsoft.com/en-us/library/windows/desktop/aa378184(v=vs.85).aspx

    bool IsValidWindowsUser(string userName, string password)
    {
        using (var p = new PrincipalContext(ContextType.Machine))
            return p.ValidateCredentials(userName, password);
    }

ВАЖНЫЙ БИТ: Я обнаружил, что это БЫЛО работало на обеих системах Windows 10, но с тех пор обе системы заменили свои жесткие диски жестким диском. Перемещение ОС осуществлялось с помощью программного обеспечения Disk Imaging, а все остальное в операционной системе было исправным. Я знаю, что подпись диска / раздела изменилась. Может ли это сломать / повредить хранилище учетных данных? Компьютер с Windows 7 Pro также заменил диск, но он продолжает работать, как и ожидалось.

Другой старый вопрос, который возможно связан с этим:Проверьте учетные данные пользователя на локальном компьютере.

Этот вопрос также, кажется, говорит об исключении FileNotFoundException с PrincipalContext (ContextType.Machine), но только если нет сетевого подключения. В моем случае всегда есть сетевое соединение. Я бы использовал LogonUser, но мне также нужно проверить членство в группе.

Ответы на вопрос(2)

Ваш ответ на вопрос