Хорошо, это заняло некоторое время, возиться с различными решениями, но то, которое лучше всего подходит для моего первоначального вопроса, приведено ниже. Я не могу получить объект DirectoryEntry для доступа к членам локальной группы, используя «стандартные» методы, единственный способ, которым я мог получить его для перечисления членов, - это использовать метод Invoke для вызова нативных объектов. *
using(DirectoryEntry groupEntry = new DirectoryEntry("WinNT://./Administrators,group"))
{
foreach(object member in (IEnumerable) groupEntry.Invoke("Members"))
{
using(DirectoryEntry memberEntry = new DirectoryEntry(member))
{
Console.WriteLine(memberEntry.Path);
}
}
}
Я также использовал похожую технику для добавления и удаления членов из локальной группы.
Надеюсь, это поможет кому-то еще.
Кит.
РЕДАКТИРОВАТЬ Тимом: добавлена версия VB.Net
Public Function MembersOfGroup(ByVal GroupName As String) As List(Of DirectoryEntry)
Dim members As New List(Of DirectoryEntry)
Try
Using search As New DirectoryEntry("WinNT://./" & GroupName & ",group")
For Each member As Object In DirectCast(search.Invoke("Members"), IEnumerable)
Dim memberEntry As New DirectoryEntry(member)
members.Add(memberEntry)
Next
End Using
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
Return members
End Function