繁体   English   中英

您如何从C#中公司的域/网络设置中获取用户信息?

[英]How do you get user info from a company's domain/network settings in C#?

有人告诉我,用户信息(例如姓名,地址,电话等)存储在网络上(显然只有在有人提供了该信息的情况下)。 这是Outlook在网络上搜索用户时获得的信息(Outlook用来填充联系人卡的信息)。 这显然很有效,因为我可以搜索公司网络中的任何人,并且可以为我们网络上的世界各地的人们获得结果。

我正在研究的程序是我们公司内部的程序,我的任务之一是使用该信息预先填充表格。

我的问题是,如何获得此信息? 它存放在哪里? 我用什么物体来得到它?

编辑:我对此有点一般。 我真正需要的是当前用户的信息(“当前”是登录到计算机并使用我的程序的任何人)。 最好的方法是什么?

要从Active Directory中读取,所需的类位于System.DirectoryServices.dll中。 重要的是DirectorySearcher和DirectoryEntry。 查看此其他问题的前两个答案,以获取更多代码: 如何在C#中获取当前用户的Active Directory详细信息

更新:要获取当前用户的信息,请使用其登录名,然后在Active Directory中搜索具有相同用户ID的用户。 像这样的东西:

adSearch.Filter =“(sAMAccountName =” + Environment.UserName +“)”;

(在ASP.Net中,您将在其他位置获得用户名。)

如果您使用的是Active Directory,则可以在给定域和用户名的情况下从那里查询该信息。 它基本上是一个LDAP存储,但是在网络上有很多关于如何实现它的信息。

这是另一个问题,专门询问如何从Active Directory中检索此信息:

如何在C#中获取当前用户的Active Directory详细信息

在桌面应用程序中,要获取当前登录用户的Windows用户名,可以使用Environment.UserName

David和Neil Barnwell提供的答案还有另外一个提示:

您可以使用HttpContext.Current.User.Identity.Name获取其ID。

如果要从程序集或其他后端代码中使用它,请确保using System.Web添加。

要回答您的问题“是否有办法获取当前的域控制器...”,对我有所帮助的一种方法是使用nltest命令[1],如下所示:

C:\>nltest /dsgetdc:yourdomain.com

它应该输出各种有用的东西。

[1] http://support.microsoft.com/kb/247811

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM