获取AD域用户信息,同步到另外一个域

quanxiaoyouzi 2017-02-15 02:14:19
如题。我想实现从一个AD域中获取用户信息,同步到另外一个AD域。该怎么做。
有没有相关例子或者代码。
没搞过AD域,第一次弄。
麻烦各位大哥。
...全文
685 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
booksell 2017-02-15
  • 打赏
  • 举报
回复
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年前写的代码,不知道能不能帮助到你。

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧