C# 获取域用户信息
C#读取域信息,需要引用两个程序集

using System;
using System.Collections.Generic;
using System.Data;
using System.DirectoryServices;
using System.DirectoryServices.AccountManagement;
using System.Linq;
using System.Net.NetworkInformation;
using System.Text;
namespace BaseClass.Common
{
public class ActiveDirectory
{
/// <summary>
/// 获取域中的用户,并返回datatable
/// </summary>
/// <returns></returns>
public static DataTable GetAdUser()
{
IPGlobalProperties ipGlobal = IPGlobalProperties.GetIPGlobalProperties();
string domainName = ipGlobal.DomainName;
PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, domainName);
UserPrincipal userPrincipal = new UserPrincipal(principalContext);
PrincipalSearcher principalSearcher = new PrincipalSearcher(userPrincipal);
DataTable dtUser = new DataTable();
dtUser.Columns.Add("Sid", typeof(string));
dtUser.Columns.Add("SamAccountName", typeof(string));
dtUser.Columns.Add("UserPrincipalName", typeof(string));
dtUser.Columns.Add("Surname", typeof(string));
dtUser.Columns.Add("MiddleName", typeof(string));
dtUser.Columns.Add("GivenName", typeof(string));
dtUser.Columns.Add("Name", typeof(string));
dtUser.Columns.Add("Description", typeof(string));
dtUser.Columns.Add("EmailAddress", typeof(string));
dtUser.Columns.Add("LastLogon", typeof(string));
foreach (UserPrincipal userPrincipalSearchResult in principalSearcher.FindAll())
{
DataRow row = dtUser.NewRow();
dtUser.Rows.Add(row);
row["Sid"] = userPrincipalSearchResult.Sid;
row["SamAccountName"] = userPrincipalSearchResult.SamAccountName;
row["UserPrincipalName"] = userPrincipalSearchResult.UserPrincipalName;
row["Surname"] = userPrincipalSearchResult.Surname;
row["MiddleName"] = userPrincipalSearchResult.MiddleName;
row["GivenName"] = userPrincipalSearchResult.GivenName;
row["Name"] = userPrincipalSearchResult.Name;
row["Description"] = userPrincipalSearchResult.Description;
row["EmailAddress"] = userPrincipalSearchResult.EmailAddress;
row["LastLogon"] = userPrincipalSearchResult.LastLogon;
}
userPrincipal.Dispose();
return dtUser;
}
/// <summary>
/// 连接域,连接成功返回True,失败返回False
/// </summary>
/// <param name="domainName"></param>
/// <param name="userName"></param>
/// <param name="password"></param>
/// <returns></returns>
public static bool ConnectAD(string domainName, string userName, string password)
{
DirectoryEntry domain = new DirectoryEntry();
try
{
domain.Path = string.Format("LDAP://{0}", domainName);
domain.Username = userName;
domain.Password = password;
domain.AuthenticationType = AuthenticationTypes.Secure;
domain.RefreshCache();
domain.Close();
domain.Dispose();
return true;
}
catch (Exception ex)
{
domain.Close();
domain.Dispose();
}
return false;
}
}
}

浙公网安备 33010602011771号