さて、さまざまな解決策をいじってしばらく時間がかかりましたが、私の元の質問に最も適したものを以下に示します。「標準」メソッドを使用してローカル グループのメンバーにアクセスするための DirectoryEntry オブジェクトを取得できません。メンバーを列挙するための唯一の方法は、Invoke メソッドを使用してネイティブ オブジェクトの Member メソッドを呼び出すことでした。
using(DirectoryEntry groupEntry = new DirectoryEntry("WinNT://./Administrators,group"))
{
foreach((IEnumerable) groupEntry.Invoke("Members") 内のオブジェクト メンバー)
{
using(DirectoryEntry memberEntry = 新しい DirectoryEntry(メンバー))
{
Console.WriteLine(memberEntry.Path);
}
}
}
同様の手法を使用して、ローカル グループのメンバーを追加および削除しました。
うまくいけば、これは他の誰かにも役立ちます。キース。
Timによる編集: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