代码之家  ›  专栏  ›  技术社区  ›  Randz

无法获取ncname和netbiosname属性

  •  0
  • Randz  · 技术社区  · 14 年前

    我在网上有一些关于检索一个active directory域的netbiosname(windows 2000以前的域名)的代码。这是我的代码示例:

    Me._rootDSE = New System.DirectoryServices.DirectoryEntry("GC://RootDSE", "", "")
          Dim results As System.DirectoryServices.SearchResultCollection = Nothing
          Dim ADSPath As String = "GC://CN=Partitions," + Me._rootDSE.Properties("configurationNamingContext").Value.ToString()
    
          Dim adse As System.DirectoryServices.DirectoryEntry = New System.DirectoryServices.DirectoryEntry(ADSPath, "", "")
    
          Dim searcher As System.DirectoryServices.DirectorySearcher
    
          searcher = New System.DirectoryServices.DirectorySearcher(adse)
          searcher.SearchScope = DirectoryServices.SearchScope.OneLevel
          searcher.Filter = "(&(objectClass=crossRef)(systemflags=3))"
          searcher.PropertiesToLoad.Add("netbiosname")
          searcher.PropertiesToLoad.Add("ncname")
    
          results = searcher.FindAll()
    
          If results.Count > 0 Then
            For Each sr As System.DirectoryServices.SearchResult In results
              Dim de As System.DirectoryServices.DirectoryEntry = sr.GetDirectoryEntry()
              'netbiosname and ncname properties returns nothing
              System.Diagnostics.Trace.WriteLine(sr.GetDirectoryEntry().Properties("netbiosname").Value.ToString())
              System.Diagnostics.Trace.WriteLine(sr.GetDirectoryEntry().Properties("ncname").Value.ToString())
            Next
          End If
    

    当我使用“(&objectClass=crossref)(systemflags=3)”筛选器时,不会得到任何结果,但当我删除systemflags筛选器时,会得到一些结果。

    但是,在我得到的搜索结果中,我仍然无法访问ncname和netbiosname属性的值。我可以正确地获得其他属性,比如搜索结果的distinguishedname和cn。

    你知道我可能做错了什么吗,或者去哪里看?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Randz    14 年前

    我找到了一个解决方案,我不知道这是不是正确的,但它是有效的。我将adspath的值从

    Dim ADSPath As String = "GC://CN=Partitions," + Me._rootDSE.Properties("co..
    

    Dim ADSPath As String = "LDAP://<server>/CN=Partitions," + Me._rootDSE.Properties("co..
    

    我提供了LDAP服务器地址,一切都解决了。现在,如果我能以编程方式获取LDAP服务器的IP地址或FQDN,就不必使用配置文件来存储LDAP服务器的值。