Code:/// <summary> /// Returns true if the current logged on user is a member /// of the given active directory group /// </summary> /// <param name="groupname"> /// The name of the active directory group to check /// </param> /// <remarks> /// If we pass a group name with no root (e.g. no EMEA APAC etc) then /// the users own root needs to be used, /// </remarks> /// <returns></returns> public static bool IsUserInGroup(string groupname) { if (string.IsNullOrEmpty(groupname)) { return true; } else { bool _return = false; AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); WindowsPrincipal _user = (WindowsPrincipal)System.Threading.Thread.CurrentPrincipal; WindowsIdentity _ident = (WindowsIdentity)_user.Identity; string _domainName = @""; string _groupname = @""; if (groupname.Contains(@"\")) { // use the domain specified _domainName = groupname.Substring(0, groupname.IndexOf(@"\") ); _groupname = groupname.Substring(groupname.IndexOf(@"\") + 1); } else { // use the current user domain string _username = _ident.Name; if (_username.Contains(@"\")) { _domainName = _username.Substring(0, _username.IndexOf(@"\") ); } _groupname = groupname; } foreach (IdentityReference group in _ident.Groups ) { NTAccount account = null; try { account = (NTAccount)group.Translate( typeof( NTAccount ) ); } catch ( IdentityNotMappedException ) { } catch ( UnauthorizedAccessException ) { } catch ( SystemException ) { } if ( account != null ) { if (account.Value.Equals(_domainName + @"\" + _groupname, StringComparison.OrdinalIgnoreCase)) { _return = true; break; } } } return _return; } }