微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过C#确定本地组的成员

我想知道是否有人知道如何通过C#以编程方式获得远程服务器上本地组的成员资格。 这是否需要pipe理员权限? 如果有,是否有任何方法来确认当前login的用户的成员(或不)这些组?

控件的树视图与崩溃/展开

通过Linux和Mono编写.NET for Windows

在System.Net.UnsafeNclNativeMethods.OSSOCK.recv中的ThreadAbortException

文件被另一个进程使用。 如何知道哪个进程?

如何判断提供的文件是否真的是registryconfiguration单元

Howto:(几乎)通过C#的Active Directory中的所有内容都非常有帮助,还包括如何迭代组中的AD成员的说明。

public ArrayList Groups(string userDn,bool recursive) { ArrayList groupMemberships = new ArrayList(); return AttributeValuesMultiString("memberOf",userDn,groupMemberships,recursive); }

你也需要这个功能

public ArrayList AttributeValuesMultiString(string attributeName,string objectDn,ArrayList valuesCollection,bool recursive) { DirectoryEntry ent = new DirectoryEntry(objectDn); PropertyValueCollection ValueCollection = ent.Properties[attributeName]; IEnumerator en = ValueCollection.GetEnumerator(); while (en.MoveNext()) { if (en.Current != null) { if (!valuesCollection.Contains(en.Current.ToString())) { valuesCollection.Add(en.Current.ToString()); if (recursive) { AttributeValuesMultiString(attributeName,"LDAP://" + en.Current.ToString(),valuesCollection,true); } } } } ent.Close(); ent.dispose(); return valuesCollection; }

如果你现在想要使用这个AD方法,你可以使用这篇文章中的信息,但它使用非托管代码

http://www.codeproject.com/KB/cs/groupandmembers.aspx

他们所做的示例应用程序:

在.net 3.5中有一个叫做System.DirectoryServices.AccountManagement的新程序集,它比System.DirectoryServices提供了一个更清晰的实现。 多米尼克·拜尔博客介绍了几个简单的操作,包括检查一个组的成员:

public static bool IsUserInGroup(string username,string groupname,ContextType type) { PrincipalContext context = new PrincipalContext(type); UserPrincipal user = UserPrincipal.FindByIdentity( context,IdentityType.SamAccountName,username); GroupPrincipal group = GroupPrincipal.FindByIdentity( context,groupname); return user.IsMemberOf(group); }

我想我会用这个方法,但是谢谢你的建议!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐