пример поиска с использованием API ADSI для программного создания группы Windows - PullRequest
0 голосов
/ 10 ноября 2011

Пример использования API ADSI для программного создания группы Windows. AD - Windows Active Directory http://en.wikipedia.org/wiki/Active_Directory

'SI' может быть Сервисный интерфейс?

Во всяком случае, эта область просто плохо документирована. , , Я видел несколько скриптов PowerShell. , , но на самом деле не хотят, чтобы PowerShell был установлен и т. д. Простая программа, которая запускается и гарантирует, что MY_XYZ_GROUP добавлена ​​в набор групп Windows .....

Должно быть легко .... Кажется, не так просто.

Ответы [ 2 ]

2 голосов
/ 10 ноября 2011

ADSI = Интерфейсы службы Active Directory - это API для связи с Active Directory для создания пользователей, групп, учетных записей компьютеров в Active Directory - сетевой каталог LDAP для сетей Microsoft .

Итак, вам нужно создавать локальных пользователей на локальном компьютере / сервере или создавать группы в Active Directory?

Если вы программируете на .NET 3.5 и выше, вам следует проверить пространство имен System.DirectoryServices.AccountManagement (S.DS.AM). Прочитайте все об этом здесь:

По сути, вы можете определить контекст домена и легко находить пользователей и / или группы в AD:

// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");

if(user != null)
{
   // do something here....     
}

// create a group 
GroupPrincipal group = new GroupPrincipal(ctx, "Group01");
// set other properties on the group here.....
group.Save();  

Новый S.DS.AM позволяет очень легко играть с пользователями и группами в AD!

Обновление: к сожалению, новый S.DS.AM не работает с локальными группами :-( он предназначен только для использования в Active Directory.

Если вам нужно создать локальную группу Windows, вам нужно использовать более старый подход DirectoryEntry - что-то вроде:

// bind to your machine's WinNT:// provider
DirectoryEntry computer = new DirectoryEntry("WinNT://YourMachineNameHere");

// create a new local group on your computer
DirectoryEntry newGroup = computer.Children.Add("NewGroupName", "Group");

// save that group to the local machine
newGroup.CommitChanges();

// refresh the property cache so you can set properties like "Description" or others
newGroup.RefreshCache();
newGroup.Properties["description"].Value = "Description for your group....";
newGroup.CommitChanges();

Ричард Мюллер имеет большой список листов Excel , показывающий все доступные свойства, как для объектов Active Directory на основе LDAP, так и очень ограниченные свойства WinNT.

1 голос
/ 08 декабря 2011

NetLocalGroupAddMembers (Windows API) - это API-интерфейс, который я искал, это гораздо меньшее использование по сравнению с методами ADSI.Кодируется и тестируется и работает, как описано в MSDN.

Непонятно, почему этот API так отсутствовал во всех моих релевантных и обширных поисках в Интернете - одна из причин - «Локальный», который я не включил.

Вот ссылка на MSDN: http://msdn.microsoft.com/en-us/library/windows/desktop/aa370436(v=VS.85).aspx

...