积极答复者
微软的AD域,有增加/删除用户的接口可供调用吗?

问题
答案
-
您好,
请参考以下的帖子,谢谢!Howto: (Almost) Everything In Active Directory via C#
Active Directory如何用C#进行增加、删除、修改、查询用户与组织单位
System.DirectoryServices.AccountManagement 命名空间概述
以上說明若有錯誤請指教,謝謝。
亂馬客blog: http://www.dotblogs.com.tw/rainmaker/- 已标记为答案 Bob ShenModerator 2012年7月27日 9:23
-
可以通过LDAP的方式进行操作的。如下代码:
新建AD用户:
System.DirectoryServices.DirectoryEntry myDirectoryEntry = ent.Children.Add("CN=" + usr.SAMAccountName, "user");
ADEntityControls.SetProperty(myDirectoryEntry, "distinguishedName", usr.DistinguishedName);
ADEntityControls.SetProperty(myDirectoryEntry, "name", usr.Name);
ADEntityControls.SetProperty(myDirectoryEntry, "displayName", usr.DisplayName);
ADEntityControls.SetProperty(myDirectoryEntry, "sAMAccountName", usr.SAMAccountName);
ADEntityControls.SetProperty(myDirectoryEntry, "sn", usr.Sn);
ADEntityControls.SetProperty(myDirectoryEntry, "givenName", usr.GivenName);
ADEntityControls.SetProperty(myDirectoryEntry, "physicalDeliveryOfficeName", usr.PhysicalDeliveryOfficeName);
ADEntityControls.SetProperty(myDirectoryEntry, "telephoneNumber", usr.TelephoneNumber);
ADEntityControls.SetProperty(myDirectoryEntry, "description", usr.Description);
ADEntityControls.SetProperty(myDirectoryEntry, "comment", usr.Department);
ADEntityControls.SetProperty(myDirectoryEntry, "Mobile", usr.Mobile);
ADEntityControls.SetProperty(myDirectoryEntry, "mail", usr.Mail);
ADEntityControls.SetProperty(myDirectoryEntry, "objectVersion", usr.ExtensionAttribute1);
ADEntityControls.SetProperty(myDirectoryEntry, "revision", usr.ExtensionAttribute2);
ADEntityControls.SetProperty(myDirectoryEntry, "scriptPath", usr.ExtensionAttribute3);
ADEntityControls.SetProperty(myDirectoryEntry, "roomNumber", usr.ExtensionAttribute4);
ADEntityControls.SetProperty(myDirectoryEntry, "userAccountControl", "544");
myDirectoryEntry.CommitChanges();
SetUserPassword(myDirectoryEntry, password);
myDirectoryEntry.CommitChanges();
myDirectoryEntry.Close();
myDirectoryEntry.Dispose();移除用户:
DirectoryEntry usrentry = ADEntityControls.GetEntry(ads, "(&(objectClass=user)(objectCategory=Person)(sAMAccountName=" + SAMAccountName + "))", SearchScope.Subtree);
if (usrentry != null)
{
usrentry.Parent.Children.Remove(usrentry);
usrentry.Close();
usrentry.Dispose();
return !ExistUser(ads, SAMAccountName);
}修改密码:
public static void SetUserPassword(DirectoryEntry oDE, string Password)
{
if (oDE != null)
{
try
{
oDE.Invoke("SetPassword", new object[] { Password });
}
catch (System.Exception)
{}
}
}- 已标记为答案 Bob ShenModerator 2012年7月27日 9:23
-
您好,請參考小弟上面的link,另外,下面的link也有相關的範例,
Using System.DirectoryServices C# 代码示例速查列表
本主题包含指向“System.DirectoryServices 使用指南”中包含的所有 C# 代码示例的链接。
- 创建组
-
使用 Add 方法。
- 添加目录对象
-
使用 Add 方法添加子对象。
- 向组中添加成员
-
使用 Add 方法。
- 绑定字符串
-
使用 DirectoryEntry 对象绑定到多个对象。
- 使用 GUID 绑定
-
使用 NativeGuid 属性。
- Boolean 属性类型
-
使用 Value 属性读取和设置 Boolean 属性。
- 管理用户密码
-
更改用户密码。
- 结构化属性
-
读取和写入结构化属性。
- DirectoryEntry 对象
-
在内存中创建绑定到目录中某一项的 DirectoryEntry 对象,并且写入该目录项的路径、名称和 GUID。
- 创建组
-
创建新组、域本地组和非安全组。
- 创建用户
-
使用 Add 方法。
- DateTime 属性
-
写入 date/time 属性。
- 删除组
-
使用 Remove 方法。
- DirectorySearcher 示例
-
设置基本目录搜索。
- 具有二进制属性类型的 DN
-
使用 ActiveDS 进行读写操作。
- 枚举子对象
-
使用简单 foreach 语句。
- 枚举组中的成员
-
使用属性。
- 枚举组中的成员
-
使用 Windows 窗体。
- 枚举大组中的成员
-
使用范围检索。
- 获取对象的标识
-
获取 DirectoryEntry 对象的属性。
- 调用 ADSI 方法
-
使用 Invoke 方法。
- 调用 ADSI 属性
-
使用 InvokeMember 方法。
- 大整数属性类型
-
读取和写入大整数。
- 移动目录对象
-
使用 MoveTo 方法。
- 定位到子对象
-
使用 Children 属性绑定到多个子对象。
- 定位到父对象
-
使用 Parent 属性绑定到多个父对象。
- 八位字节字符串 (SID) 属性类型
-
读取和写入八位字节字符串。
- 读取目录对象的属性
-
使用 Properties 集合读取对象属性。
- 读取具有多个值的属性
-
使用 Values 属性和数组读取属性值。
- 设置多个目录对象的多个属性
-
将 Setting 属性与 Add 方法和 Value 属性一起使用。
- 设置具有多个值的属性
-
使用 AddRange 和 Insert 方法并使用数组。
- 属性缓存
-
使用 RefreshCache 方法。
- 从组中删除成员
-
使用 Add 方法。
- 重命名对象
-
使用 Rename 属性。
- 搜索组
-
使用 DirectorySearcher。
- 附加搜索选项
-
使用 ReferralChasing 属性。
- 获取搜索结果
-
使用 SearchResult 和 SearchResultCollection 类检索搜索结果。
- 搜索目录
-
将 DirectorySearcher 类和 FindAll 方法一起用于搜索目录。
- 设置搜索筛选器
-
使用 Filter 属性设置搜索筛选器。
- 设置搜索范围
-
使用 SearchScope 属性。
- 安全描述符属性类型
-
使用 ActiveDS 读取和写入安全描述符。
- 管理用户密码
-
设置用户密码。
- 字符串属性类型
-
读取字符串。
- 启用和禁用用户帐户
-
启用和禁用用户帐户。
- 管理用户密码
-
使用 ActiveDS。
- 设置用户帐户到期
-
使用 InvokeMember 方法。
- 设置用户帐户标志
-
设置标志。
- 设置在属性页上显示的属性
-
设置在用户界面中查看的属性。
- 添加目录对象
-
使用 Exists 方法验证目录对象在目录中是否存在。
以上說明若有錯誤請指教,謝謝。
亂馬客blog: http://www.dotblogs.com.tw/rainmaker/- 已标记为答案 Bob ShenModerator 2012年7月27日 9:23
全部回复
-
您好,
请参考以下的帖子,谢谢!Howto: (Almost) Everything In Active Directory via C#
Active Directory如何用C#进行增加、删除、修改、查询用户与组织单位
System.DirectoryServices.AccountManagement 命名空间概述
以上說明若有錯誤請指教,謝謝。
亂馬客blog: http://www.dotblogs.com.tw/rainmaker/- 已标记为答案 Bob ShenModerator 2012年7月27日 9:23
-
可以通过LDAP的方式进行操作的。如下代码:
新建AD用户:
System.DirectoryServices.DirectoryEntry myDirectoryEntry = ent.Children.Add("CN=" + usr.SAMAccountName, "user");
ADEntityControls.SetProperty(myDirectoryEntry, "distinguishedName", usr.DistinguishedName);
ADEntityControls.SetProperty(myDirectoryEntry, "name", usr.Name);
ADEntityControls.SetProperty(myDirectoryEntry, "displayName", usr.DisplayName);
ADEntityControls.SetProperty(myDirectoryEntry, "sAMAccountName", usr.SAMAccountName);
ADEntityControls.SetProperty(myDirectoryEntry, "sn", usr.Sn);
ADEntityControls.SetProperty(myDirectoryEntry, "givenName", usr.GivenName);
ADEntityControls.SetProperty(myDirectoryEntry, "physicalDeliveryOfficeName", usr.PhysicalDeliveryOfficeName);
ADEntityControls.SetProperty(myDirectoryEntry, "telephoneNumber", usr.TelephoneNumber);
ADEntityControls.SetProperty(myDirectoryEntry, "description", usr.Description);
ADEntityControls.SetProperty(myDirectoryEntry, "comment", usr.Department);
ADEntityControls.SetProperty(myDirectoryEntry, "Mobile", usr.Mobile);
ADEntityControls.SetProperty(myDirectoryEntry, "mail", usr.Mail);
ADEntityControls.SetProperty(myDirectoryEntry, "objectVersion", usr.ExtensionAttribute1);
ADEntityControls.SetProperty(myDirectoryEntry, "revision", usr.ExtensionAttribute2);
ADEntityControls.SetProperty(myDirectoryEntry, "scriptPath", usr.ExtensionAttribute3);
ADEntityControls.SetProperty(myDirectoryEntry, "roomNumber", usr.ExtensionAttribute4);
ADEntityControls.SetProperty(myDirectoryEntry, "userAccountControl", "544");
myDirectoryEntry.CommitChanges();
SetUserPassword(myDirectoryEntry, password);
myDirectoryEntry.CommitChanges();
myDirectoryEntry.Close();
myDirectoryEntry.Dispose();移除用户:
DirectoryEntry usrentry = ADEntityControls.GetEntry(ads, "(&(objectClass=user)(objectCategory=Person)(sAMAccountName=" + SAMAccountName + "))", SearchScope.Subtree);
if (usrentry != null)
{
usrentry.Parent.Children.Remove(usrentry);
usrentry.Close();
usrentry.Dispose();
return !ExistUser(ads, SAMAccountName);
}修改密码:
public static void SetUserPassword(DirectoryEntry oDE, string Password)
{
if (oDE != null)
{
try
{
oDE.Invoke("SetPassword", new object[] { Password });
}
catch (System.Exception)
{}
}
}- 已标记为答案 Bob ShenModerator 2012年7月27日 9:23
-
您好,請參考小弟上面的link,另外,下面的link也有相關的範例,
Using System.DirectoryServices C# 代码示例速查列表
本主题包含指向“System.DirectoryServices 使用指南”中包含的所有 C# 代码示例的链接。
- 创建组
-
使用 Add 方法。
- 添加目录对象
-
使用 Add 方法添加子对象。
- 向组中添加成员
-
使用 Add 方法。
- 绑定字符串
-
使用 DirectoryEntry 对象绑定到多个对象。
- 使用 GUID 绑定
-
使用 NativeGuid 属性。
- Boolean 属性类型
-
使用 Value 属性读取和设置 Boolean 属性。
- 管理用户密码
-
更改用户密码。
- 结构化属性
-
读取和写入结构化属性。
- DirectoryEntry 对象
-
在内存中创建绑定到目录中某一项的 DirectoryEntry 对象,并且写入该目录项的路径、名称和 GUID。
- 创建组
-
创建新组、域本地组和非安全组。
- 创建用户
-
使用 Add 方法。
- DateTime 属性
-
写入 date/time 属性。
- 删除组
-
使用 Remove 方法。
- DirectorySearcher 示例
-
设置基本目录搜索。
- 具有二进制属性类型的 DN
-
使用 ActiveDS 进行读写操作。
- 枚举子对象
-
使用简单 foreach 语句。
- 枚举组中的成员
-
使用属性。
- 枚举组中的成员
-
使用 Windows 窗体。
- 枚举大组中的成员
-
使用范围检索。
- 获取对象的标识
-
获取 DirectoryEntry 对象的属性。
- 调用 ADSI 方法
-
使用 Invoke 方法。
- 调用 ADSI 属性
-
使用 InvokeMember 方法。
- 大整数属性类型
-
读取和写入大整数。
- 移动目录对象
-
使用 MoveTo 方法。
- 定位到子对象
-
使用 Children 属性绑定到多个子对象。
- 定位到父对象
-
使用 Parent 属性绑定到多个父对象。
- 八位字节字符串 (SID) 属性类型
-
读取和写入八位字节字符串。
- 读取目录对象的属性
-
使用 Properties 集合读取对象属性。
- 读取具有多个值的属性
-
使用 Values 属性和数组读取属性值。
- 设置多个目录对象的多个属性
-
将 Setting 属性与 Add 方法和 Value 属性一起使用。
- 设置具有多个值的属性
-
使用 AddRange 和 Insert 方法并使用数组。
- 属性缓存
-
使用 RefreshCache 方法。
- 从组中删除成员
-
使用 Add 方法。
- 重命名对象
-
使用 Rename 属性。
- 搜索组
-
使用 DirectorySearcher。
- 附加搜索选项
-
使用 ReferralChasing 属性。
- 获取搜索结果
-
使用 SearchResult 和 SearchResultCollection 类检索搜索结果。
- 搜索目录
-
将 DirectorySearcher 类和 FindAll 方法一起用于搜索目录。
- 设置搜索筛选器
-
使用 Filter 属性设置搜索筛选器。
- 设置搜索范围
-
使用 SearchScope 属性。
- 安全描述符属性类型
-
使用 ActiveDS 读取和写入安全描述符。
- 管理用户密码
-
设置用户密码。
- 字符串属性类型
-
读取字符串。
- 启用和禁用用户帐户
-
启用和禁用用户帐户。
- 管理用户密码
-
使用 ActiveDS。
- 设置用户帐户到期
-
使用 InvokeMember 方法。
- 设置用户帐户标志
-
设置标志。
- 设置在属性页上显示的属性
-
设置在用户界面中查看的属性。
- 添加目录对象
-
使用 Exists 方法验证目录对象在目录中是否存在。
以上說明若有錯誤請指教,謝謝。
亂馬客blog: http://www.dotblogs.com.tw/rainmaker/- 已标记为答案 Bob ShenModerator 2012年7月27日 9:23
-
Get list of Active Directory users in C#
密码不可以获得!
以上說明若有錯誤請指教,謝謝。
亂馬客blog: http://www.dotblogs.com.tw/rainmaker/ -
- 已编辑 亂馬客 2012年10月19日 8:49