0

寻求使用 ADSI API 以编程方式创建 Windows 组的示例。AD 是 Windows 活动目录http://en.wikipedia.org/wiki/Active_Directory

“SI”也许是服务接口?

无论如何,这个领域只是没有很好的记录。. . 我看过一些 PowerShell 脚本。. . 但真的不想确保已安装 PowerShell 等。运行并确保将 MY_XYZ_GROUP 添加到 Window 的组集的简单程序.....

应该很容易......看起来并不那么容易。

4

2 回答 2

2

ADSI = Active Directory 服务接口- 它是与 Active Directory 对话以在 Active Directory 中创建用户、组、计算机帐户的 API - Microsoft 网络的基于网络的 LDAP 目录。

那么您需要在本地机器/服务器上创建本地用户,还是需要在 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();

Richard Mueller 有一个很好的 Excel 工作表列表,其中显示了所有可用的属性,包括基于 LDAP 的 Active Directory 对象以及非常有限的 WinNT 属性。

于 2011-11-10T19:38:16.477 回答
1

NetLocalGroupAddMembers (Windows API) 是我一直在寻找的 API,与 ADSI 方法相比,这要少得多。按照 MSDN 中的记录进行编码和测试并工作。

不清楚为什么这个 API 在我的所有相关和广泛的互联网搜索中都如此缺席 - 一个原因是我没有包括“本地”。

这是 MSDN 链接: http: //msdn.microsoft.com/en-us/library/windows/desktop/aa370436 (v=VS.85).aspx

于 2011-12-08T13:47:47.110 回答