Почему бы не использовать то, что уже находится в рамке.
Взгляните на это: WindowsPrincipal.IsInRole Method (String)
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
principal.IsInRole("role name");
ИЛИ
Если вы используете C#/VB.Net и System.DirectoryServices, этот фрагмент должен сделать трюк:
DirectoryEntry rootEntry = new DirectoryEntry("LDAP://dc=yourcompany,dc=com");
DirectorySearcher srch = new DirectorySearcher(rootEntry);
srch.SearchScope = SearchScope.Subtree;
srch.Filter = "(&(objectClass=user)(sAMAccountName=yourusername)(memberof=CN=yourgroup,OU=yourOU,DC=yourcompany,DC=com))";
SearchResultCollection res = srch.FindAll();
if(res == null || res.Count <= 0)
Console.WriteLine("This user is NOT a member of this group");
else
Console.WriteLine("This user is INDEED a member of this group");
Осторожно: это будет проверяться только на непосредственное членство в группах, и оно не будет проверять членство в так называемой «первичной группе» (обычно «cn = Пользователи») в вашем домене. Он не обрабатывает вложенные членства, например. Пользователь A является членом группы A, входящей в группу B, - тот факт, что Пользователь A действительно является членом группы B, также не отражается здесь.
Ссылка: How to write LDAP query to test if user is member of a group?
Этот вопрос конкретно о Compact Framework (я выяснены в тегах), который не имеет никакой поддержки 'WindowsPrincipal' или' DirectoryEntry'. – ctacke