有没有:
.net 2.0框架中的等价性? 它使用System.DirectoryServices.AccountManagement(ver 3.5)引用。我尝试在.net 2.0框架上使用该文件,但无济于事。string name = System.DirectoryServices.AccountManagement.UserPrincipal.Current.DisplayName;
基本上,我想检索windows用户的完整用户名(名字和姓氏)(而不是Request.ServerVariables [“REMOTE_USER”],它只提供windows用户名)
答案 0 :(得分:7)
S.D.AM命名空间是在.NET 3.5中引入的,不幸的是,它没有2.0版本。
您可以使用WindowsIdentity.GetCurrent()在ASP.NET应用中查询当前的Windows用户。名称 - 这将为您提供DOMAIN \ UserName。
然后,您必须在AD中为具有DirectorySearcher对象的用户进行用户搜索,以便找到相应的DirectoryEntry。这将为您提供该用户的所有部分内容。
string currentUser = WindowsIdentity.GetCurrent().Name;
string[] domainUserName = currentUser.Split('\\');
string justUserName = domainUserName[1];
DirectoryEntry searchRoot = new DirectoryEntry("LDAP://dc=(yourcompany),dc=com");
DirectorySearcher ds = new DirectorySearcher(searchRoot);
ds.SearchScope = SearchScope.Subtree;
ds.PropertiesToLoad.Add("sn");
ds.PropertiesToLoad.Add("givenName");
ds.Filter = string.Format("(&(objectCategory=person)(samAccountName={0}))", justUserName);
SearchResult sr = ds.FindOne();
if (sr != null)
{
string firstName = sr.Properties["givenName"][0].ToString();
string lastName = sr.Properties["sn"][0].ToString();
}
它有点复杂并涉及.NET 2.0 - 无法改变: - (
马克