У меня проблемы с получением «userAccountProperty» в DirectoryEntry. Мне нужно свойство, чтобы проверить, активирован ли пользователь в ActiveDirectory, и я пытался сделать это часами.
Чтобы получить большинство свойств, я могу использовать следующий код.
string objectDN = "CN=Tyler,CN=Users,DC=MYDC1,DC=MYDC2"
DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://" + objectDN);
PropertyValueCollection value = dirEntry.Properties["name"];
if (value.Value != null)
{
string name = value.Value.ToString();
}
одна и та же операция для «userAccountControl» всегда приводит к нулевому результату.
Я выяснил, что это может иметь какое-то отношение к разрешениям, поэтому я попробовал его с аутентификацией в качестве администратора. Сначала с конструктором DirectoryEntry, подобным этому:
DirectoryEntry objDirEntry = new DirectoryEntry("LDAP://" + objectDN", username, password)
, который дал тот же результат, что и без аутентификации (null для "userAccountControl").
Итак, я попробовал его с PrincipalContext.
PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, "mydomain", "DC=MYDC1,DC=MYDC2", username, password);
bool isValid = principalContext.ValidateCredentials(username, password);
UserPrincipal user = UserPrincipal.FindByIdentity(principalContext, "tyler");
DirectoryEntry dirEnt = (DirectoryEntry)user.GetUnderlyingObject();
var test1= dirEnt.Properties["distinguishedName"];
var test2= dirEnt.Properties["userAccountControl"];
Аутентификация действительна, и для пользователя существует свойство, которое вызывается (что всегда ложно). При использовании нижележащего объекта свойство userAccountControl по-прежнему равно нулю.
Дополнительным фактором, который я действительно не могу понять, является то, что я вошел в систему как adminUser в домене. Я занимаюсь разработкой в VisualStudio, и когда я запускаю приложение от имени администратора, я могу получить свойство userAccountControl. Но почему это не работает, когда я аутентифицируюсь как этот пользователь, не запустив его в качестве администратора? Я полностью смущен этим.