Отобразить диалог "Выбрать пользователей и группы" из приложения WPF?
Мне нужно отобразить стандартный диалог "Выбрать пользователей и группы" из приложения .NET/WPF. Я также должен иметь возможность отображать его под 64-разрядной ОС. Я нашел эту статью CodeProject, которая довольно древняя, начиная с .NET 1.1 дней. Он написан на управляемом С++ и отображается как COM-объект, который не будет работать для моих нужд.
Кто-нибудь реализовал или узнал о реализации чистой оболочки .NET/С# для отображения и взаимодействия со стандартным диалоговым окном "Выбрать пользователей и группы", который будет работать с приложением WPF?
Ответы
Ответ 1
Ну, я нашел решение. Оказывается, я искал неправильную вещь. Вместо "Выбрать пользователей или группы" правильная вещь для поиска - "Active Directory Object Picker". ADOP - это общее диалоговое окно, которое используется для выбора любого объекта из Active Directory, включая пользователей, группы, компьютеры и т.д. Как правило, это диалоговое окно называется "Выбрать пользователей или группы" большую часть времени.
В интересах кого-либо, кто столкнулся с этой проблемой, я отправляю ссылку на проект CodePlex, Общие диалоги Active Directory.NET, который обеспечивает очень удобную оболочку .NET для этого диалога. Делает его в значительной степени простым в использовании, как и любой другой общий диалог .NET:
http://adui.codeplex.com/
Для тех из вас, кто работает в 64-битной операционной системе или более современной операционной системе (Win2k8 +), вы можете столкнуться с сбоем после выбора пользователей или групп и выбора ok. Решение проблемы находится здесь:
http://www.codeplex.com/ADUI/Thread/View.aspx?ThreadId=38047
Надеюсь, это поможет любому, кто искал то же самое.
Ответ 2
http://adui.codeplex.com/ - это хорошая реализация, но у нее есть утечка памяти, которую я не смог удалить. Если вы его используете и попытаетесь открыть диалоговое окно выбора рекламы несколько раз, вы получите AccessViolationException для чтения/записи памяти. Это плохой знак.
Я использовал другую оболочку из здесь. Он должен быть немного настроен в коде, но AccessViolationExceptions.
Ответ 3
Мы создали NuGet, доступный по адресу https://github.com/Tulpep/Active-Directory-Object-Picker.
Он основан на этом проекте https://adui.codeplex.com/, упоминании проекта другими, но с исправленной утечкой памяти.