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