2012-11-13 50 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();