[C#.NET][VB.NET][Active Directory] 如何 操作 Active Directory ,新增/启停 账号 /How to Change Account’s abbribute in the Active Directory

[C#.NET][VB.NET][Active Directory] 如何 操作 Active Directory ,新增/启停 账号 /How to Change Account's abbribute in the Active Directory


上一篇 [C#.NET][VB.NET] 如何 存取 Active Directory 账号资讯 / How to Get Active Directory of Information

说明了如果使用System.DirectoryServices 命名空间取得Active Directory(AD)的资讯,更进一阶我们就能针对AD上的内容操作;要变更AD当然就需要管理者的账号跟密码了!

新增账号:这是最常见的一个操作,是利用 DirectoryEntries 类 将账号加进去AD

2010-2-7 下午 12-58-12_thumb[7]

Note:值得一提的是使用DirectoryEntry.Invoke 方法,调用 IADsUser界面 的 SetPassword方法,来为账号设定密码。

当程序完成后,我们可以在AD里面找到它:

2010-2-7 下午 01-34-54_thumb[4]

新增的账号必须要"启用"它才可以用:

2010-2-7 下午 01-38-51_thumb[12]

Note:启用账号是用LADP Provider的ADS_USER_FLAG_ENUM枚举来设定属性,当用Actice Directory时,则设定LADP Provider中的userAccountControl属性,若是用WinNT Provider就设定userFlags属性。请参考:http://msdn.microsoft.com/en-us/library/aa772300%28VS.85%29.aspx

2010-2-7 下午 01-46-32_thumb[3]

 

ADS_USER_FLAG_ENUM没有Enable的属性,所以我们要先取得 "userAccountControl属性" 再 "互斥或" ADS_UF_ACCOUNTDISABLE,才能启用账号;若要停用账号,直接设定userAccountControl=2即可。

C#

int val = (int)find.Properties["userAccountControl"].Value;
find.Properties["userAccountControl"].Value = val ^ 0x2;

VB

Dim val As Integer = CInt(find.Properties("userAccountControl").Value)
find.Properties("userAccountControl").Value = val Xor 0x2

如果你要改变密码,方法跟上述的一样。
2010-2-7 下午 02-07-23_thumb[3] 

删除账号用 DirectoryEntries.Remove 方法

2010-2-7 下午 02-18-13_thumb[3]

范例下载:CS_GetADAccount2.rar

2010-2-7 下午 02-22-56_thumb[4]

若有谬误,烦请告知,新手发帖请多包涵

2010~2017 C# 第四季