[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]

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo