[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
Note:值得一提的是使用DirectoryEntry.Invoke 方法,呼叫 IADsUser介面 的 SetPassword方法,來為帳號設定密碼。
當程式完成後,我們可以在AD裡面找到它:
新增的帳號必須要"啟用"它才可以用:
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
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
如果你要改變密碼,方法跟上述的一樣。
刪除帳號用 DirectoryEntries.Remove 方法
範例下載:CS_GetADAccount2.rar
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET