2011-07-20 85 views
0

我試圖在活動目錄中創建嵌套安全組,用下面的代碼來創建嵌套安全組:試圖在Active Directory中

DirectoryEntry newContainer = dirEntry.Children.Add("CN=" + groupName, "group"); 
newContainer.Properties["description"].Value = groupId; 

GrpType gt = GrpType.GlobalGrp | GrpType.SecurityGrp; 
int typeNum = (int)gt; 

newContainer.Properties["groupType"].Add(typeNum); 
newContainer.Properties["sAMAccountName"].Add(groupName); 

newContainer.CommitChanges(); 

創建第一級組,當我得到沒有問題的,但當我嘗試在這些組中創建一個子安全組時,我得到一個「命名違規」錯誤,沒有進一步的答案。

順便說一下,我可以手動創建這些安全組。

+1

A組不是在樹的角度上在'另一個組'的內部創建的。你稱之爲次級安全小組,你想把一個小組作爲另一個小組的成員嗎? – JPBlanc

+0

組不是一個容器 - 你不能在組內創建對象。你可以做的是讓一個安全組成爲**另一個安全組的成員 - 成員創建這些「嵌套」組 - 不包含。 –

+0

對於術語我很抱歉,我對Active Directory處理頗爲陌生。確切地說,我試圖創建一個屬於其他安全組的成員的子組。但是我正面臨着兒童團體的「命名違規」。 – Safirio

回答

1

據幫助下,你可以找到:Howto: (Almost) Everything In Active Directory via C#

這裏是你想要做蒙山ADSI什麼一個例子:

/* Connection to Active Directory 
*/ 
DirectoryEntry deBase = new DirectoryEntry("LDAP://WM2008R2ENT:389/ou=Monou,dc=dom,dc=fr", "user", "password"); 

/* Group1 creation 
*/ 
DirectoryEntry aGrp1 = deBase.Children.Add("cn=yourGrp1", "group"); 
aGrp1.Properties["description"].Value = "The description you want"; 
aGrp1.Properties["groupType"].Add(ADS_GROUP_TYPE_ENUM.ADS_GROUP_TYPE_GLOBAL_GROUP | ADS_GROUP_TYPE_ENUM.ADS_GROUP_TYPE_SECURITY_ENABLED); 
aGrp1.Properties["sAMAccountName"].Add("yourGrp1"); 
aGrp1.CommitChanges(); 

/* Group2 creation 
*/ 
DirectoryEntry aGrp2 = deBase.Children.Add("cn=yourGrp2", "group"); 
aGrp2.Properties["description"].Value = "The description you want"; 
aGrp2.Properties["groupType"].Add(ADS_GROUP_TYPE_ENUM.ADS_GROUP_TYPE_GLOBAL_GROUP | ADS_GROUP_TYPE_ENUM.ADS_GROUP_TYPE_SECURITY_ENABLED); 
aGrp2.Properties["sAMAccountName"].Add("yourGrp2"); 
aGrp2.CommitChanges(); 

/* Group2 MemberOf Group1 
*/ 
aGrp1.Properties["Member"].Add(aGrp2.Properties["distinguishedName"].Value); 
aGrp1.CommitChanges(); 

隨着Security Principals與.NET框架3.5介紹你可以做在最短的方式同樣的事情看:Managing Directory Security Principals in the .NET Framework 3.5

0

我會稍後回來,然後也許更好的代碼