Как определить, включена или отключена учетная запись пользователя
Я бросаю вместе быстрое приложение c# win forms, чтобы помочь решить повторяющуюся канцелярскую работу.
Я выполнил поиск в AD для всех учетных записей пользователей и добавляю их в список с флажками.
Я хотел бы, чтобы состояние проверки по умолчанию listviewitems зависело от включенного/отключенного состояния учетной записи.
string path = "LDAP://dc=example,dc=local";
DirectoryEntry directoryRoot = new DirectoryEntry(path);
DirectorySearcher searcher = new DirectorySearcher(directoryRoot,
"(&(objectClass=User)(objectCategory=Person))");
SearchResultCollection results = searcher.FindAll();
foreach (SearchResult result in results)
{
DirectoryEntry de = result.GetDirectoryEntry();
ListViewItem lvi = new ListViewItem(
(string)de.Properties["SAMAccountName"][0]);
// lvi.Checked = (bool) de.Properties["AccountEnabled"]
lvwUsers.Items.Add(lvi);
}
Я изо всех сил пытаюсь найти правильный атрибут для разбора, чтобы получить состояние учетной записи из DirectoryEntry объект. Я искал атрибуты пользователя AD, но не нашел ничего полезного.
может ли кто-нибудь предложить какие-либо указатели?
3 ответов:
этот код должен работать...
private bool IsActive(DirectoryEntry de) { if (de.NativeGuid == null) return false; int flags = (int)de.Properties["userAccountControl"].Value; return !Convert.ToBoolean(flags & 0x0002); }
Использование Системы.Каталог.Бухгалтерия: доменное имя и имя пользователя должны быть строковыми значениями домена и имени пользователя.
using (var domainContext = new PrincipalContext(ContextType.Domain, domainName)) { using (var foundUser = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, username)) { if (foundUser.Enabled.HasValue) { return (bool)foundUser.Enabled; } else { return true; //or false depending what result you want in the case of Enabled being NULL } } }
Не то, чтобы кто-то спросил, Но вот версия java (так как я оказался здесь в поисках одного). Нуль, проверки остается в качестве упражнения для читателя.
private Boolean isActive(SearchResult searchResult) { Attribute userAccountControlAttr = searchResult.getAttributes().get("UserAccountControl"); Integer userAccountControlInt = new Integer((String) userAccoutControlAttr.get()); Boolean disabled = BooleanUtils.toBooleanObject(userAccountControlInt & 0x0002); return !disabled; }
Comments