从WPF应用程序中显示“选择用户和组”对话框?

15
我需要从.NET/WPF应用程序中显示标准的“选择用户和组”对话框。我还需要能够在64位操作系统下显示它。我找到了此CodeProject文章,它相当古老,可以追溯到.NET 1.1时代。它是用托管C++编写的,并作为COM对象公开,这不符合我的需求。
是否有人实现或知道一个纯.NET/C#包装器的实现,用于显示和与标准系统“选择用户和组”对话框交互,可用于WPF应用程序?
3个回答

20

嗯,我找到了解决方案。 原来我搜索的是错误的东西。 正确的搜索词应该是“Active Directory Object Picker”,ADOP是通用对话框,可用于从Active Directory中选择任何对象,包括用户、组、计算机等。 大部分时候,这个对话框的标题都是“Select Users or Groups”。

为了使其他遇到此问题的人受益,我在此发布一个链接到CodePlex项目的Active Directory Common Dialogs .NET,该项目提供了一个非常易于使用的.NET封装器,使其与任何其他常见的.NET对话框一样容易使用:

http://adui.codeplex.com/

对于那些运行在64位操作系统或更现代操作系统(Win2k8+)上的用户,可能会在选择用户或组并选择ok后遇到崩溃。 问题的解决方法在这里:

http://www.codeplex.com/ADUI/Thread/View.aspx?ThreadId=38047

希望这能帮助正在寻找同样东西的任何其他人。


1
+1 我大约一年前在一个项目中真的需要这个,最后我只能从头开始编写一个。这个很值得收藏,谢谢。 - AdamW
1
@kerchingo:抱歉,我一年前没有留意到这个问题。 :P 不过我希望这个问题/答案能够被搜索引擎收录。因为目前还没有其他相关的内容将“选择用户或组”和“Active Directory对象选择器”联系在一起,所以很难找到有用的信息。 - jrista
1
有一个可用的补丁可以修复提到的问题以及其他问题:http://adui.codeplex.com/SourceControl/list/patches - Helge Klein
我已经下载了上面的代码(谢谢!),我想访问远程计算机以进行AD操作,有人知道在代码中哪里可以提供密码吗? - Meir
1
我们已将其制作成Nuget并进行了修复。请使用Install-Package Tulpep.ActiveDirectoryObjectPicker进行安装。 - Ricardo Polo Jaramillo

4

1

http://adui.codeplex.com/ - 这是一个很好的实现,但它有内存泄漏问题,我无法解决。如果您使用它并尝试多次打开广告选择对话框,则会收到AccessViolationException以读取/写入内存。这是个坏兆头。

我使用了另一个包装器here。代码应该稍微定制一下,但不会出现AccessViolationExceptions。


1
ADUI是我使用的,如果你看了我的答案。我还链接了一个解决导致崩溃的内存泄漏的方案。到目前为止,它在32位和64位系统上都完美运行。 - jrista

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接