从Active Directory查询,编辑和添加对象中的属性

时间:2015-04-13 12:57:02

标签: vb.net active-directory vb.net-2010

我需要使用visual basic创建一个小应用程序,它将从AD检索用户并编辑/添加一些属性。这里的代码查询ldap并使用object属性中的信息填充一些文本框。我的vb知识有限,所以请理解我的问题,我想知道是否有更好的方法来实现这个目标:

    Dim deSystem As New DirectoryEntry("LDAP://etc")
    Dim dsSystem As New DirectorySearcher(deSystem)
    Dim srsystem As SearchResult

        Try

            dsSystem.Filter = ("(&(objectClass=user)(samaccountname=" & TextBox1.Text & "))")
            dsSystem.SearchScope = SearchScope.Subtree
            dsSystem.PropertiesToLoad.Add("sAMAccountName")
            dsSystem.PropertiesToLoad.Add("givenName")
            dsSystem.PropertiesToLoad.Add("sn")
            dsSystem.PropertiesToLoad.Add("proxyAddresses")

            srsystem = dsSystem.FindOne()

            TextBox2.Text = srsystem.Properties("givenName").Item(0).ToString
            TextBox3.Text = srsystem.Properties("sn").Item(0).ToString
            Button3.Enabled = True

        Catch ex As Exception
            MsgBox(TextBox1.Text & " is an Invalid UserID")
            TextBox1.Text = ""
            TextBox1.Focus()

        End Try

某些属性包含多行,并且某些对象的某些属性不存在,如何在多行文本框中插入多行信息以进行examaple,如何在属性中阻止代码发送错误不存在?现在我使用“.Item(0).ToString”从第0行查询属性,如果该属性不存在则返回错误,我需要绕过这些。 最重要的部分是:如何在AD中更新属性或为对象添加新属性?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

    // find the group in question
    GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, "YourGroupNameHere");

    // if found....
    if (group != null)
    {
       // iterate over members
       foreach (Principal p in group.GetMembers())
       {
           Console.WriteLine("{0}: {1}", p.StructuralObjectClass, p.DisplayName);
           // do whatever you need to do to those members
       }
    }
}

新的S.DS.AM让您可以轻松地与AD中的用户和群组一起玩!