Невозможно получить свойства ncName и netBIOSName - PullRequest
0 голосов
/ 15 апреля 2010

У меня есть некоторый код в сети, относящийся к поиску NetBIOSName (доменное имя до Windows 2000) домена Active Directory. Вот мой пример кода:

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. Я могу получить другие свойства, такие как отличительные имя и CN результатов поиска должным образом.

Есть идеи о том, что я могу делать неправильно или где искать дальше?

1 Ответ

1 голос
/ 19 апреля 2010

Я нашел решение, я не знаю, правильное ли оно, но оно работает. Я изменил значение 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 и все получилось. Теперь, если бы я мог программно получить IP-адрес или полное доменное имя сервера LDAP, мне не пришлось бы использовать файл конфигурации для хранения значения сервера LDAP.

...