2010-07-01 21 views
10

Szukam sposobu, jak programowo utworzyć lokalną grupę użytkowników. Znalazłem mnóstwo przykładów, jak wysyłać zapytania i dodawać użytkowników, ale nic nie rozumiem, jak utworzyć nową grupę.Jak utworzyć lokalną grupę użytkowników (w języku 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(); 
} 

To co ja przybył, ale wiem, że to nie tak jak CommitChanges() prostu rzuca NotImplementedException.

Używam tego jako próby, ale nie mogę nawet zmusić go do pracy (dzięki MS):

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

Każdy posiada fragment kodu można użyć, aby utworzyć nowy lokalny Grupa?

Odpowiedz

10

Działa to dla mnie:

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(); 

Adaptacja this artykułu o użytkownikach.

Wygląda na to, że przegapiłeś Invoke "Put" w twoim przykładzie - domyślam się, że właśnie dlatego widzisz wyjątek NotImplementedException.

+0

Tak, dokładnie tak się stało. Znalazłem przykład na dodanie użytkownika i to o nazwie "Dodaj". Ten sam kod z "Put" działa teraz. Dzięki! –

+0

Za mało punktów do głosowania, ale zaakceptowałem twoją odpowiedź. Jeszcze raz dziękuję. –

+0

@ the-diamond-z - thanks! Zdałem sobie sprawę, że nie podjąłem twojego pytania, więc po prostu to zrobiłem. Witamy w Stack Overflow! –

6

Możesz spróbować wykonać następujące czynności (nie próbowałem to sam):

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

używa System.DirectoryServices.AccountManagement.

+4

Dlaczego chcesz wysłać odpowiedź, nawet jej nie próbując? To tylko szum linii, który prowadzi do dzikich gonitw. –

+2

Aby być uczciwym, to działa ... – Doogal

+0

Możesz również przekazać nazwę grupy w konstruktorze, jak w: GroupPrincipal group = new GroupPrincipal (context, "MyLocalGroup") –