gpt4 book ai didi

c# - 获取 WinNT 组的成员列表

转载 作者:IT王子 更新时间:2023-10-29 04:42:02 25 4
gpt4 key购买 nike

在堆栈溢出上有几个类似的问题,但不完全相同。

我想在 win xp 计算机上打开或创建一个本地组,并向其中添加成员、域、本地和众所周知的帐户。我还想检查用户是否已经是成员(member),这样我就不会添加同一个帐户两次,并且可能会出现异常。

到目前为止,我开始将 DirectoryEntry 对象与 WinNT:// 提供程序一起使用。一切顺利,但我一直在思考如何获取群组成员列表?

有人知道怎么做吗?或者提供比使用 DirectoryEntry 更好的解决方案?

最佳答案

好吧,花了一些时间,弄乱了不同的解决方案,但下面给出了最适合我的原始问题的解决方案。我无法使用“标准”方法获取 DirectoryEntry 对象来访问本地组的成员,我可以使用它来枚举成员的唯一方法是使用 Invoke 方法调用 native 对象的 Members 方法。

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);        }    }}

I also used a similar technique to add and remove members from the local group.

Hopefully this helps someone else as well.Keith.

EDIT by Tim: added VB.Net version

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

关于c# - 获取 WinNT 组的成员列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/252882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com