2012-11-13 82 views
3

我正嘗試重命名一個組。我的代碼如下所示GroupPrincipal重命名組

PrincipalContext context = new PrincipalContext(ContextType.Machine); 
GroupPrincipal group = GroupPrincipal.FindByIdentity(context, "GroupName"); 
group.SamAccountName = "NewGroupName"; 
group.DisplayName = "NewGroupName"; 
group.Name = "NewGroupName"; 
group.Save(); 

的問題是,它崩潰的group.DisplayName = "NewGroupName";並將異常

屬性不適用於此存儲類型。

如果我註釋掉那行代碼將運行,但我想更改顯示名稱。我做了一些研究,發現this.但是我正在使用Framework 4.0。有誰知道另一個要做什麼,或者我以這種錯誤的方式去做?

回答

3

經過深思熟慮,我發現獲得group.Name = "Newname";的唯一方法就是獲取DirectoryEntry對象,然後進行更改。下面的代碼

PrincipalContext context = new PrincipalContext(ContextType.Machine); 
GroupPrincipal group = GroupPrincipal.FindByIdentity(context, "GroupName"); 
var Groupentry = (DirectoryEntry)group.GetUnderlyingObject(); 
Groupentry.Rename("newname"); 
Groupentry.CommitChanges();