Question

I'm looking for a way how to programmatically create a local user group. I found plenty of examples on how to query and add users but nothing I can understand about how to create a new group.

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

This is what I've arrived at but I know it's wrong as CommitChanges() just throws a NotImplementedException.

I've been using this as a sample but I can't even get it to work (thanks MS):

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

Anyone have a code snippet I can use to create a new local group?

Was it helpful?

Solution

This works for me:

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

Adapted from this article on users.

It looks like you missed the Invoke "Put" in your example - I guess this is why you are seeing the NotImplementedException.

OTHER TIPS

You may try the following (haven't tried it myself):

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

This uses System.DirectoryServices.AccountManagement.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top