gpt4 book ai didi

c# - 使用 C# 将用户添加到 Active Directory 组时遇到问题

转载 作者:行者123 更新时间:2023-12-05 01:03:13 25 4
gpt4 key购买 nike

好的,我现在的问题是我们正在尝试编写将用户添加到 Active Directory 中的不同组的代码。这是我们编写的解决方案。

部分main方法:

string newGroup = "TestDelete";
string userName = result.Properties["cn"][0].ToString();
string adduser = ad.AddToGroup(userName, newGroup);
Console.WriteLine(String.Format("{0} : {1}",userName, adduser));

从另一个类调用这个方法:

public String AddToGroup(string userDn, string groupDn)
{
try
{
DirectoryEntry ldapConnection = new DirectoryEntry("LDAP://OU=" + groupDn + ",DC=blah,DC=blah,DC=blah");
ldapConnection.AuthenticationType = AuthenticationTypes.Secure;

string newUser = "CN=" + userDn + "CN=Members,DC=blah,DC=blah,DC=blah";

ldapConnection.Invoke("Add", new object[] { newUser });
ldapConnection.CommitChanges();
ldapConnection.Close();

return "Success";
}
catch (System.DirectoryServices.DirectoryServicesCOMException E)
{
Console.WriteLine("Exception caught:\n\n" + E.ToString());
}
}

抛出异常

System.Runtime.InteropServices.COMException (0x80020006): Unknown name. (Exception from HRESULT: 0x80020006 (DISP_E_UNKNOWNNAME))
at System.DirectoryServices.DirectoryEntry.InvokeSet(String propertyName, Object[] args)
at adjustUsers.Program.AddToGroup(String userDn, String groupDn) in C:\Users\XXX\Documents\Visual Studio 2010\Projects\UserPruning\adjustUsers\Program.cs:line 45
at UserPruning.MainProgram.Main(String[] args) in C:\Users\XXX\Documents\Visual Studio 2010\Projects\UserPruning\UserPruning\MainProgram.cs:line 46

据我们所知,这表明我们的语法存在问题。

第 46 行是

string adduser = ad.AddToGroup(userName,newGroup)

第 45 行是

ldapConnection.Invoke("Add", new object[] {newUser});

我们在最后一天一直在尝试重写这段代码,但仍然被难住了。

帮助?

谢谢

最佳答案

如果您使用的是 .NET 3.5 及更高版本,则应查看 System.DirectoryServices.AccountManagement (S.DS.AM) 命名空间。在此处阅读所有相关信息:

基本上,您可以定义域上下文并在 AD 中轻松找到用户和/或组:

// set up domain context
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))
{
// find your user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");

if(user != null)
{
// find the group in question
GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, "TestDelete");

// if found....
if (group != null)
{
// add user to group
group.Members.Add(user);
group.Save();
}
}
}

新的 S.DS.AM 让在 AD 中与用户和组一起玩变得非常容易!

关于c# - 使用 C# 将用户添加到 Active Directory 组时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14740700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com