2011-01-14 85 views
2

有人告诉我,像名字,地址,电话等用户信息存储在网络上(显然只有当一个人已经给出了这个信息)。这是Outlook在网络上搜索用户时获取的信息(Outlook用于填充联系人卡片的信息)。这显然是有效的,因为我可以在我公司的网络中搜索任何人,并且可以为我们网络上的全球人员获得结果。如何从C#公司的域/网络设置获取用户信息?

我正在从事的计划是我们公司的内部工作,我的任务之一是预先填写具有该信息的表单。

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

编辑:我对此有点普遍。我真正需要的是当前用户的信息('当前'是登录到计算机并使用我的程序的人)。什么是最好的方式来获得它?

回答

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,你会得到其他地方的用户名。)

3

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

这里的另一个问题是明确要求如何从Active Directory检索这些信息:

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

在一个桌面应用程序,以获得当前登录用户的Windows用户名,您可以使用Environment.UserName

+0

更新了我的问题。这仍然是我需要采取的相同方法吗? – 2011-01-14 16:45:56

+0

在桌面应用程序中,要获取当前登录用户的Windows用户名,可以使用`Environment.UserName`。 – 2011-01-14 16:56:00

0

一个额外的小费与答案大卫和尼尔巴恩韦尔提供附和:

可以使用HttpContext.Current.User.Identity.Name得到他们的ID 。

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

0

要回答你的问题“有没有办法让当前的域控制器......”这是有帮助的,我一个办法,就是使用nltest命令[1]是这样的:

C:\>nltest /dsgetdc:yourdomain.com 

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

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