Вы не можете.
Документация для AccountManagement
пространства имен начинается с:
Пространство имен System.DirectoryServices.AccountManagement обеспечивает униформудоступ и манипулирование принципалами безопасности пользователя, компьютера и группы
Обратите внимание, что в нем ничего не говорится о подразделениях.Они не спроектировали его для этого.
В LDAP в общем, самый быстрый способ проверить, существует ли объект, - это привязать его непосредственно к объекту.Это именно то, что делает DirectoryEntry.Exists()
.Вы можете увидеть исходный код здесь :
/// <devdoc>
/// Searches the directory store at the given path to see whether an entry exists.
/// </devdoc>
public static bool Exists(string path)
{
DirectoryEntry entry = new DirectoryEntry(path);
try
{
entry.Bind(true); // throws exceptions (possibly can break applications)
return entry.Bound;
}
catch (System.Runtime.InteropServices.COMException e)
{
if (e.ErrorCode == unchecked((int)0x80072030) ||
e.ErrorCode == unchecked((int)0x80070003) || // ERROR_DS_NO_SUCH_OBJECT and path not found (not found in strict sense)
e.ErrorCode == unchecked((int)0x800708AC)) // Group name could not be found
return false;
throw;
}
finally
{
entry.Dispose();
}
}
Любой другой способ сделать это будет работать хуже.
Вид примечания: в то время как AccountManagement
Пространство имен делает некоторые вещи проще для разработчика, это платно.Это всегда работает хуже, чем использование DirectoryEntry
напрямую.Иногда это не заметно, но если вы делаете много поисков, это может быстро сложиться.