Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create a local user group (in C#)

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?

like image 347
The Diamond Z Avatar asked Jul 01 '10 09:07

The Diamond Z


People also ask

How do I create a local group in Windows?

Create a group. Click Start > Control Panel > Administrative Tools > Computer Management. In the Computer Management window, expand System Tools > Local Users and Groups > Groups. Click Action > New Group.


2 Answers

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.

like image 122
Ronald Wildenberg Avatar answered Oct 14 '22 18:10

Ronald Wildenberg


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.

like image 25
Rob Levine Avatar answered Oct 14 '22 18:10

Rob Levine