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

时间:2011-01-14 16:28:18

标签: c# network-programming settings

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

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

我的问题是,如何获取此信息?它存放在哪里?我用什么对象来获取它?

编辑:我对此很了解。我真正需要的是当前用户的信息('当前'是登录到计算机并使用我的程序的任何人)。获得它的最佳方法是什么?

4 个答案:

答案 0 :(得分:4)

要从Active Directory读取,您需要的类位于System.DirectoryServices.dll中。重要的是DirectorySearcher和DirectoryEntry。看一下这个问题的前2个答案,以获得更多代码:How to get the current user's Active Directory details in C#

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

  

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

(在ASP.Net中,您可以在别处获得用户名。)

答案 1 :(得分:3)

如果您使用的是Active Directory,那么您可以根据域和用户名从那里查询该信息。它基本上是一个LDAP商店,但网上有大量关于如何实现它的信息。

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

How to get the current user's Active Directory details in C#

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

答案 2 :(得分:0)

另外一个提示大卫和尼尔巴恩威尔提供的答案:

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

如果您想在程序集或其他后端代码中使用此功能,请务必添加using System.Web

答案 3 :(得分:0)

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

C:\>nltest /dsgetdc:yourdomain.com

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

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