62,243
社区成员




public class ADHelper
{
#region fields
/// <summary>
/// 绑定路径
/// </summary>
protected static string ADPath = ADConfiguration.Config.ADPath;
/// <summary>
/// 管理员登录帐号
/// </summary>
protected static string ADUser = ADConfiguration.Config.ADUser;
/// <summary>
/// 管理员登录密码
/// </summary>
protected static string ADPassword = ADConfiguration.Config.ADPassword;
#endregion
public ADHelper()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
#region create directoryentry
/// <summary>
/// 以管理员身份获得 DirectoryEntry 对象实例
/// </summary>
/// <returns>DirectoryEntry 对象实例</returns>
protected static DirectoryEntry CreateDirectoryEntry()
{
return CreateDirectoryEntry(ADPath);
}
/// <summary>
/// 获得相应DirectoryEntry 对象实例
/// </summary>
/// <param name="path">路径</param>
/// <returns></returns>
protected static DirectoryEntry CreateDirectoryEntry(string path)
{
DirectoryEntry entry = new DirectoryEntry(path);
return entry;
}
/// <summary>
/// 根据指定用户名和密码获得相应 DirectoryEntry 对象实例
/// </summary>
/// <param name="userName">用户名</param>
/// <param name="password">密码</param>
/// <returns>DirectoryEntry 对象实例</returns>
protected static DirectoryEntry CreateDirectoryEntry(string userName, string password)
{
return CreateDirectoryEntry(ADPath, userName, password);
}
/// <summary>
/// 获得以指定路径、用户名和密码创建的 DirectoryEntry 对象实例
/// </summary>
/// <param name="path">路径</param>
/// <param name="userName">用户名</param>
/// <param name="password">密码</param>
/// <returns>DirectoryEntry 对象实例</returns>
protected static DirectoryEntry CreateDirectoryEntry(string path, string userName, string password)
{
DirectoryEntry entry = new DirectoryEntry(path, userName, password, AuthenticationTypes.Secure);
return entry;
}
/// <summary>
/// 根据查询字符串取得 DirectoryEntry 对象实例
/// </summary>
/// <param name="filterString"></param>
/// <returns>如果找到该对象,则返回用户的 DirectoryEntry 对象;否则返回 null</returns>
public static DirectoryEntry FindObject(string filterString)
{
DirectoryEntry dirEntry = CreateDirectoryEntry();
DirectorySearcher deSearch = new DirectorySearcher(dirEntry);
deSearch.SearchScope = SearchScope.Subtree;
deSearch.Filter = filterString;
try
{
SearchResult result = deSearch.FindOne();
dirEntry = result.GetDirectoryEntry();
return dirEntry;
}
catch
{
return null;
}
}
/// <summary>
/// 根据查询字符串取得所有的 DirectoryEntry 对象实例
/// </summary>
/// <param name="rootDirEntry"></param>
/// <param name="filterString">查询字符串</param>
/// <returns>所有的 DirectoryEntry 对象</returns>
public static DirectoryEntry[] FindObjects( string filterString)
{
DirectoryEntry dirEntry = CreateDirectoryEntry();
DirectorySearcher deSearch = new DirectorySearcher(dirEntry);
deSearch.Filter = filterString;
deSearch.SearchScope = SearchScope.Subtree;
try
{
SearchResultCollection results = deSearch.FindAll();
int i = 0, count = results.Count;
DirectoryEntry[] resultDirs = new DirectoryEntry[count];
foreach(SearchResult e in results)
{
resultDirs[i++] = e.GetDirectoryEntry();
}
return resultDirs;
}
catch
{
return null;
}
}
#endregion
#region property value
/// <summary>
/// 获得指定属性名对应的值
/// </summary>
/// <param name="de">属性名称</param>
/// <param name="propertyName">属性值</param>
/// <returns></returns>
public static string GetPropertyValue(DirectoryEntry de, string propertyName)
{
if(de.Properties.Contains(propertyName))
{
return de.Properties[propertyName][0].ToString() ;
}
else
{
return string.Empty;
}
}
/// <summary>
/// 获得指定搜索结果中指定属性名对应的值
/// </summary>
/// <param name="searchResult">指定搜索结果</param>
/// <param name="propertyName">属性名称</param>
/// <returns>属性值</returns>
public static string GetPropertyValue(SearchResult searchResult, string propertyName)
{
if(searchResult.Properties.Contains(propertyName))
{
return searchResult.Properties[propertyName][0].ToString() ;
}
else
{
return string.Empty;
}
}
#endregion
}
这是N年前写的代码,不知道能不能帮助到你。