2010-07-01 4 views
10

Я ищу способ, как программно создать локальную группу пользователей. Я нашел множество примеров того, как запрашивать и добавлять пользователей, но я ничего не могу понять о том, как создать новую группу.Как создать локальную группу пользователей (в C#)

var dirEntry = new DirectoryEntry(
         "WinNT://" + Environment.MachineName + ",computer"); 

/* Code to test if the group already exists */    

if (!found) 
{ 
    DirectoryEntry grp = dirEntry.Children.Add(groupName, "Group"); 
    dirEntry.CommitChanges(); 
} 

Это то, что я прибыл в, но я знаю, что это неправильно, как CommitChanges() просто бросает NotImplementedException.

Я использовал это в качестве образца, но я даже не могу заставить его работать (спасибо MS):

http://msdn.microsoft.com/en-us/library/ms815734

Кто-нибудь есть фрагмент кода, я могу использовать, чтобы создать новый локальный группа?

ответ

10

Это работает для меня:

var ad = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer"); 
DirectoryEntry newGroup = ad.Children.Add("TestGroup1", "group"); 
newGroup.Invoke("Put", new object[] { "Description", "Test Group from .NET" }); 
newGroup.CommitChanges(); 

адаптировано из this статьи на пользователей.

Похоже, вы пропустили Invoke «Put» в своем примере - я думаю, именно поэтому вы видите NotImplementedException.

+0

Да, это именно то, что произошло. Я нашел пример добавления Пользователя, который называется «Добавить». Тот же код с «Put» работает сейчас. Благодаря! –

+0

Недостаточно очков для голосования, но я принял ваш ответ. Еще раз спасибо. –

+0

@ the-diamond-z - спасибо! Я понял, что не поставил вопрос на ваш вопрос, так что просто. Добро пожаловать в переполнение стека! –

6

Вы можете попробовать следующее (не пробовал сам):

PrincipalContext context = new PrincipalContext(ContextType.Machine); 
GroupPrincipal group = new GroupPrincipal(context); 
group.Name = model.Name; 
group.Save(); 

Это использует System.DirectoryServices.AccountManagement.

+4

Зачем вы отправляете ответ, даже не пробовав его? Это всего лишь линейный шум, который приводит к диким гусям. –

+2

Чтобы быть справедливым, он работает ... – Doogal

+0

Вы также можете передать имя группы в конструкторе, как в: GroupPrincipal group = new GroupPrincipal (контекст, «MyLocalGroup») –

Смежные вопросы