有人告诉我,用户信息如姓名,地址,电话等都存储在网络上(显然只有在有人提供该信息的情况下)。这是Outlook在网络上搜索用户时获得的信息(Outlook填充联系人卡片的信息)。这显然有效,因为我可以在我公司的网络中搜索任何人,并且我会在网络上为全世界的人们提供结果。
我正在处理的程序是我们公司的内部程序,我的任务之一是使用该信息预先填充表单。
我的问题是,如何获取此信息?它存放在哪里?我用什么对象来获取它?
编辑:我对此很了解。我真正需要的是当前用户的信息('当前'是登录到计算机并使用我的程序的任何人)。获得它的最佳方法是什么?
答案 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
它应该输出各种有用的东西。