ALL Operations on Active Directory (AD) using c#
2013-10-16 10:39
274 查看
Objective
This article will explain how to perform operations on Active Directory (AD) using C#. In this step-by-step tutorial, I will build a class library (DLL) project that will perform all the AD Operations and then you can use this class library in any applicationto use this functionality.
Basic introduction of Active Directory is provided and code examples for operations like
<!--[if !supportLists]-->1. <!--[endif]-->Finding user by login name
<!--[if !supportLists]-->2. <!--[endif]-->Finding user by Name
<!--[if !supportLists]-->3. <!--[endif]-->Finding user by First Name
<!--[if !supportLists]-->4. <!--[endif]-->Resolving AD Group in users etc
What is Active Directory
This is a Directory structure used in Windows for storing information about networks and domains. This was first used in Windows 2000. This is a hierarchical structure which helps in organizing information on objects. In lay term it is used to store userinformation, network information in an organization.
Solution Explorer for the Active Directory Helper Class library
<!--[if !vml]-->
<!--[endif]-->
ActiveDirectoryHelper is the main working class. This class will contain all the functions for various operations on AD. Other classes are helping class to perform operations and being used in
ActiveDirectoryHelper class. After adding DLL of this project, at the client side object of ActiveDirectory class will get created and the function will get called.
Diving into code to Perform Operations
Step 1
Create a new project by selecting project template Class Library.Step 2
Add below references to the projectSystem.DirectoryServices
System.DirectoryServices.AccountManagement
System.DirectoryServices.Protocols.
System.Configuration
Step 3
Add an Application Configuration file to project. And add App setting for<!--[if !supportLists]-->1. <!--[endif]-->LDAP User Name
<!--[if !supportLists]-->2. <!--[endif]-->LDAP Password
<!--[if !supportLists]-->3. <!--[endif]-->LDAP Path
So App.Config file will look like below,
App.Config
<?xmlversion="1.0"encoding="utf-8"?>
<configuration>
<appSettings>
<addkey="LDAPPassword"value="xxxPasswordxxx
" />
<addkey="LDAPPath"value="LDAP://domain/DC=xxx,DC=com"
/>
<addkey="LDAPUser"value="xxxUserxxx
" />
</appSettings>
</configuration>
Note: Give user name, password and path according to your LDAP
Step 4. Creating ADUser class
Create or add a class in the project for ADUser details. This class will have the properties corresponding to the information of the AD User.<!--[if !supportLists]-->1. <!--[endif]-->This class has read only properties for fetching First Name, Last Name, City, Login Name etc.
<!--[if !supportLists]-->2. <!--[endif]-->Constructor of the class is taking one parameter of type
DirectoryEntry class.
<!--[if !supportLists]-->3. <!--[endif]-->In Constructor all the information about ADUser is getting fetched using static class
ADProperties.
<!--[if !supportLists]-->4. <!--[endif]-->There are two static functions inside this class.
GetUser and GetProperty
<!--[if !supportLists]-->5. <!--[endif]-->Get Property
is returning a string which holds property of AD User.
<!--[if !supportLists]-->6. <!--[endif]-->GetUser
static function is returning an ADUser.
ADUserDetail.cs
using System;using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.DirectoryServices;
namespace ActiveDirectoryHelper
{
public class
ADUserDetail
{
private String _firstName;
private String _middleName;
private String _lastName;
private String _loginName;
private String _loginNameWithDomain;
private String _streetAddress;
private String _city;
private String _state;
private String _postalCode;
private String _country;
private String _homePhone;
private String _extension;
private String _mobile;
private String _fax;
private String _emailAddress;
private String _title;
private String _company;
private String _manager;
private String _managerName;
private String _department;
public String Department
{
get { return _department; }
}
public String FirstName
{
get { return _firstName; }
}
public String MiddleName
{
get { return _middleName; }
}
public String LastName
{
get { return _lastName; }
}
public String LoginName
{
get { return _loginName; }
}
public String LoginNameWithDomain
{
get { return _loginNameWithDomain; }
}
public String StreetAddress
{
get { return _streetAddress; }
}
public String City
{
get { return _city; }
}
public String State
{
get { return _state; }
}
public String PostalCode
{
get { return _postalCode; }
}
public String Country
{
get { return _country; }
}
public String HomePhone
{
get { return _homePhone; }
}
public String Extension
{
get { return _extension; }
}
public String Mobile
{
get { return _mobile; }
}
public String Fax
{
get { return _fax; }
}
public String EmailAddress
{
get { return _emailAddress; }
}
public String Title
{
get { return _title; }
}
public String Company
{
get { return _company; }
}
public ADUserDetail Manager
{
get
{
if (!String.IsNullOrEmpty(_managerName))
{
ActiveDirectoryHelper ad =
new ActiveDirectoryHelper();
return ad.GetUserByFullName(_managerName);
}
return
null;
}
}
public String ManagerName
{
get { return _managerName; }
}
private ADUserDetail(DirectoryEntry directoryUser)
{
String domainAddress;
String domainName;
_firstName = GetProperty(directoryUser,
ADProperties.FIRSTNAME);
_middleName = GetProperty(directoryUser,
ADProperties.MIDDLENAME);
_lastName = GetProperty(directoryUser,
ADProperties.LASTNAME);
_loginName = GetProperty(directoryUser,
ADProperties.LOGINNAME);
String userPrincipalName = GetProperty(directoryUser,
ADProperties.USERPRINCIPALNAME);
if (!string.IsNullOrEmpty(userPrincipalName))
{
domainAddress = userPrincipalName.Split('@')[1];
}
else
{
domainAddress = String.Empty;
}
if (!string.IsNullOrEmpty(domainAddress))
{
domainName = domainAddress.Split('.').First();
}
else
{
domainName = String.Empty;
}
_loginNameWithDomain = String.Format(@"{0}\{1}", domainName, _loginName);
_streetAddress = GetProperty(directoryUser,
ADProperties.STREETADDRESS);
_city = GetProperty(directoryUser, ADProperties.CITY);
_state = GetProperty(directoryUser, ADProperties.STATE);
_postalCode = GetProperty(directoryUser,
ADProperties.POSTALCODE);
_country = GetProperty(directoryUser,
ADProperties.COUNTRY);
_company = GetProperty(directoryUser,
ADProperties.COMPANY);
_department = GetProperty(directoryUser,
ADProperties.DEPARTMENT);
_homePhone = GetProperty(directoryUser,
ADProperties.HOMEPHONE);
_extension = GetProperty(directoryUser,
ADProperties.EXTENSION);
_mobile = GetProperty(directoryUser, ADProperties.MOBILE);
_fax = GetProperty(directoryUser, ADProperties.FAX);
_emailAddress = GetProperty(directoryUser,
ADProperties.EMAILADDRESS);
_title = GetProperty(directoryUser, ADProperties.TITLE);
_manager = GetProperty(directoryUser,
ADProperties.MANAGER);
if (!String.IsNullOrEmpty(_manager))
{
String[] managerArray = _manager.Split(',');
_managerName = managerArray[0].Replace("CN=",
"");
}
}
private static
String GetProperty(DirectoryEntry userDetail,
String propertyName)
{
if (userDetail.Properties.Contains(propertyName))
{
return userDetail.Properties[propertyName][0].ToString();
}
else
{
return
string.Empty;
}
}
public static
ADUserDetail GetUser(DirectoryEntry directoryUser)
{
return new
ADUserDetail(directoryUser);
}
}
}
Step 5: Creating ADProperties class
Create or add a class in the project for ADProperties. This class will have the properties corresponding to the information of the AD User. This is a static class. This class is having all the properties as constant string forADUser. This class is giving readable name to all the properties of user details.
ADProperties.cs
using System;using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ActiveDirectoryHelper
{
public static
class ADProperties
{
public const
String OBJECTCLASS =
"objectClass";
public const
String CONTAINERNAME =
"cn";
public const
String LASTNAME =
"sn";
public const
String COUNTRYNOTATION =
"c";
public const
String CITY = "l";
public const
String STATE = "st";
public const
String TITLE = "title";
public const
String POSTALCODE =
"postalCode";
public const
String PHYSICALDELIVERYOFFICENAME =
"physicalDeliveryOfficeName";
public const
String FIRSTNAME =
"givenName";
public const
String MIDDLENAME =
"initials";
public const
String DISTINGUISHEDNAME =
"distinguishedName";
public const
String INSTANCETYPE =
"instanceType";
public const
String WHENCREATED =
"whenCreated";
public const
String WHENCHANGED =
"whenChanged";
public const
String DISPLAYNAME =
"displayName";
public const
String USNCREATED =
"uSNCreated";
public const
String MEMBEROF =
"memberOf";
public const
String USNCHANGED =
"uSNChanged";
public const
String COUNTRY = "co";
public const
String DEPARTMENT =
"department";
public const
String COMPANY = "company";
public const
String PROXYADDRESSES =
"proxyAddresses";
public const
String STREETADDRESS =
"streetAddress";
public const
String DIRECTREPORTS =
"directReports";
public const
String NAME = "name";
public const
String OBJECTGUID =
"objectGUID";
public const
String USERACCOUNTCONTROL =
"userAccountControl";
public const
String BADPWDCOUNT =
"badPwdCount";
public const
String CODEPAGE =
"codePage";
public const
String COUNTRYCODE =
"countryCode";
public const
String BADPASSWORDTIME =
"badPasswordTime";
public const
String LASTLOGOFF =
"lastLogoff";
public const
String LASTLOGON =
"lastLogon";
public const
String PWDLASTSET =
"pwdLastSet";
public const
String PRIMARYGROUPID =
"primaryGroupID";
public const
String OBJECTSID =
"objectSid";
public const
String ADMINCOUNT =
"adminCount";
public const
String ACCOUNTEXPIRES =
"accountExpires";
public const
String LOGONCOUNT =
"logonCount";
public const
String LOGINNAME =
"sAMAccountName";
public const
String SAMACCOUNTTYPE =
"sAMAccountType";
public const
String SHOWINADDRESSBOOK =
"showInAddressBook";
public const
String LEGACYEXCHANGEDN =
"legacyExchangeDN";
public const
String USERPRINCIPALNAME =
"userPrincipalName";
public const
String EXTENSION =
"ipPhone";
public const
String SERVICEPRINCIPALNAME =
"servicePrincipalName";
public const
String OBJECTCATEGORY =
"objectCategory";
public const
String DSCOREPROPAGATIONDATA =
"dSCorePropagationData";
public const
String LASTLOGONTIMESTAMP =
"lastLogonTimestamp";
public const
String EMAILADDRESS =
"mail";
public const
String MANAGER = "manager";
public const
String MOBILE = "mobile";
public const
String PAGER = "pager";
public const
String FAX = "facsimileTelephoneNumber";
public const
String HOMEPHONE =
"homePhone";
public const
String MSEXCHUSERACCOUNTCONTROL =
"msExchUserAccountControl";
public const
String MDBUSEDEFAULTS =
"mDBUseDefaults";
public const
String MSEXCHMAILBOXSECURITYDESCRIPTOR =
"msExchMailboxSecurityDescriptor";
public const
String HOMEMDB = "homeMDB";
public const
String MSEXCHPOLICIESINCLUDED =
"msExchPoliciesIncluded";
public const
String HOMEMTA = "homeMTA";
public const
String MSEXCHRECIPIENTTYPEDETAILS =
"msExchRecipientTypeDetails";
public const
String MAILNICKNAME =
"mailNickname";
public const
String MSEXCHHOMESERVERNAME =
"msExchHomeServerName";
public const
String MSEXCHVERSION =
"msExchVersion";
public const
String MSEXCHRECIPIENTDISPLAYTYPE =
"msExchRecipientDisplayType";
public const
String MSEXCHMAILBOXGUID =
"msExchMailboxGuid";
public const
String NTSECURITYDESCRIPTOR =
"nTSecurityDescriptor";
}
}
Step 6. Creating ActiveDirectoryHelper class
<!--[if !supportLists]-->1. <!--[endif]-->This class will have all the function to perform operations to Active Directory.
<!--[if !supportLists]-->2. <!--[endif]-->There are four properties
in the class
LDAPPath property
This property is reading the LDAPPath from config file.private String LDAPPath
{
get
{
return
ConfigurationManager.AppSettings["LDAPPath"];
}
}
LDAPUser property
This property is reading the LDAP user from the config file.
private
String LDAPUser
{
get
{
return
ConfigurationManager.AppSettings["LDAPUser"];
}
}
LDAPPassword property
This property is reading the LDAP Password from the config file.private String LDAPPassword
{
get
{
return
ConfigurationManager.AppSettings["LDAPPassword"];
}
}
Search Root Property
This Property is initializing the Directory entry by passing the LDAPUser, LDAPPAth, and LDAPPassword. This property is creating a new instanceDirectoryEntry and returning that.
private DirectoryEntry SearchRoot
{
get
{
if (_directoryEntry ==
null)
{
_directoryEntry = new
DirectoryEntry(LDAPPath, LDAPUser, LDAPPassword,
AuthenticationTypes.Secure);
}
return _directoryEntry;
}
}
Various operations in ActiveDirectoryHelper class
Get User by Full Name
This function will take a full name as input parameter and return AD user corresponding to that.public ADUserDetail GetUserByFullName(String userName)
{
try
{
_directoryEntry = null;
DirectorySearcher directorySearch =
new DirectorySearcher(SearchRoot);
directorySearch.Filter = "(&(objectClass=user)(cn=" + userName +
"))";
SearchResult results = directorySearch.FindOne();
if (results !=
null)
{
DirectoryEntry user =
new DirectoryEntry(results.Path, LDAPUser, LDAPPassword);
return
ADUserDetail.GetUser(user);
}
else
{
return
null;
}
}
catch (Exception ex)
{
return
null;
}
}
Get User by Login Name
This function will return AD user. This takes Login name as input parameter.public
ADUserDetail GetUserByLoginName(String userName)
{
try
{
_directoryEntry = null;
DirectorySearcher directorySearch =
new DirectorySearcher(SearchRoot);
directorySearch.Filter = "(&(objectClass=user)(SAMAccountName=" + userName +
"))";
SearchResult results = directorySearch.FindOne();
if (results !=
null)
{
DirectoryEntry user =
new DirectoryEntry(results.Path, LDAPUser, LDAPPassword);
return
ADUserDetail.GetUser(user);
}
return
null;
}
catch (Exception ex)
{
return
null;
}
}
Get Users by from a AD Group by Group Name
This function will take a group name as input and return list of AD User in that group.public List<ADUserDetail> GetUserFromGroup(String groupName)
{
List<ADUserDetail> userlist =
new List<ADUserDetail>();
try
{
_directoryEntry = null;
DirectorySearcher directorySearch =
new DirectorySearcher(SearchRoot);
directorySearch.Filter = "(&(objectClass=group)(SAMAccountName=" + groupName +
"))";
SearchResult results = directorySearch.FindOne();
if (results !=
null)
{
DirectoryEntry deGroup =
new DirectoryEntry(results.Path, LDAPUser, LDAPPassword);
System.DirectoryServices.PropertyCollection pColl = deGroup.Properties;
int count = pColl["member"].Count;
for (int i = 0; i < count; i++)
{
string respath = results.Path;
string[] pathnavigate = respath.Split("CN".ToCharArray());
respath = pathnavigate[0];
string objpath = pColl["member"][i].ToString();
string path = respath + objpath;
DirectoryEntry user =
new DirectoryEntry(path, LDAPUser, LDAPPassword);
ADUserDetail userobj =
ADUserDetail.GetUser(user);
userlist.Add(userobj);
user.Close();
}
}
return userlist;
}
catch (Exception ex)
{
return userlist;
}
}
Get Users and Group by from a AD basis on starting with string
This function will return Users and Group information from AD on basis of first characters. Wild character * is used to filter the criteria.public List<ADUserDetail>GetUsersByFirstName(string fName)
{
//UserProfile user;
List<ADUserDetail> userlist =
new List<ADUserDetail>();
string filter =
"";
_directoryEntry = null;
DirectorySearcher directorySearch =
new DirectorySearcher(SearchRoot);
directorySearch.Asynchronous = true;
directorySearch.CacheResults = true;
//directorySearch.Filter = "(&(objectClass=user)(SAMAccountName=" + userName + "))";
filter = string.Format("(givenName={0}*", fName);
//filter = "(&(objectClass=user)(objectCategory=person)" + filter + ")";
filter = "(&(objectClass=user)(objectCategory=person)(givenName="+fName+
"*))";
directorySearch.Filter = filter;
SearchResultCollection userCollection = directorySearch.FindAll();
foreach (SearchResult users
in userCollection)
{
DirectoryEntry userEntry =
new DirectoryEntry(users.Path, LDAPUser, LDAPPassword);
ADUserDetail userInfo =
ADUserDetail.GetUser(userEntry);
userlist.Add(userInfo);
}
directorySearch.Filter = "(&(objectClass=group)(SAMAccountName=" +fName +
"*))";
SearchResultCollection results = directorySearch.FindAll();
if (results !=
null)
{
foreach (SearchResult r
in results)
{
DirectoryEntry deGroup =
new DirectoryEntry(r.Path, LDAPUser, LDAPPassword);
// ADUserDetail dhan = new ADUserDetail();
ADUserDetail agroup =
ADUserDetail.GetUser(deGroup);
userlist.Add(agroup);
}
}
return userlist;
}
Adding User to Active Directory Group
This function will take a user login name and add this to a group of AD.public bool AddUserToGroup(string userlogin,
string groupName)
{
try
{
_directoryEntry = null;
ADManager admanager =
new ADManager(LDAPDomain, LDAPUser, LDAPPassword);
admanager.AddUserToGroup(userlogin, groupName);
return
true;
}
catch (Exception ex)
{
return
false;
}
}
Removing User to Active Directory Group
This function will take a user login name and remove this to a group of AD.
public
bool RemoveUserToGroup(string userlogin,
string groupName)
{
try
{
_directoryEntry = null;
ADManager admanager =
new ADManager("xxx", LDAPUser, LDAPPassword);
admanager.RemoveUserFromGroup(userlogin, groupName);
return
true;
}
catch (Exception ex)
{
return
false;
}
}
In above two functions ADManager class is being used for adding and removing user in AD.
ADManager.cs
using System;using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.DirectoryServices.AccountManagement;
namespace ActiveDirectoryHelper
{
public class
ADManager
{
PrincipalContext context;
public ADManager()
{
context = new
PrincipalContext(ContextType.Machine,
"xxx", "xxx",
"xxx");
}
public ADManager(string domain,
string container)
{
context = new
PrincipalContext(ContextType.Domain, domain, container);
}
public ADManager(string domain,
string username, string password)
{
context = new
PrincipalContext(ContextType.Domain, username, password);
}
public bool AddUserToGroup(string userName,
string groupName)
{
bool done =
false;
GroupPrincipal group =
GroupPrincipal.FindByIdentity(context, groupName);
if (group ==
null)
{
group = new
GroupPrincipal(context, groupName);
}
UserPrincipal user =
UserPrincipal.FindByIdentity(context, userName);
if (user !=
null & group != null)
{
group.Members.Add(user);
group.Save();
done = (user.IsMemberOf(group));
}
return done;
}
public bool RemoveUserFromGroup(string userName,
string groupName)
{
bool done =
false;
UserPrincipal user =
UserPrincipal.FindByIdentity(context, userName);
GroupPrincipal group =
GroupPrincipal.FindByIdentity(context, groupName);
if (user !=
null & group != null)
{
group.Members.Remove(user);
group.Save();
done = !(user.IsMemberOf(group));
}
return done;
}
}
}
This is the way all the operation could be perform on the AD.
Complete code for ActiveDirectoryHelper.cs class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.DirectoryServices;
using System.Configuration;
namespace ActiveDirectoryHelper
{
public class
ActiveDirectoryHelper
{
private DirectoryEntry _directoryEntry =
null;
private DirectoryEntry SearchRoot
{
get
{
if (_directoryEntry ==
null)
{
_directoryEntry = new
DirectoryEntry(LDAPPath, LDAPUser, LDAPPassword,
AuthenticationTypes.Secure);
}
return _directoryEntry;
}
}
private String LDAPPath
{
get
{
return
ConfigurationManager.AppSettings["LDAPPath"];
}
}
private String LDAPUser
{
get
{
return
ConfigurationManager.AppSettings["LDAPUser"];
}
}
private String LDAPPassword
{
get
{
return
ConfigurationManager.AppSettings["LDAPPassword"];
}
}
private String LDAPDomain
{
get
{
return
ConfigurationManager.AppSettings["LDAPDomain"];
}
}
internal
ADUserDetail GetUserByFullName(String userName)
{
try
{
_directoryEntry = null;
DirectorySearcher directorySearch =
new DirectorySearcher(SearchRoot);
directorySearch.Filter = "(&(objectClass=user)(cn=" + userName +
"))";
SearchResult results = directorySearch.FindOne();
if (results !=
null)
{
DirectoryEntry user =
new DirectoryEntry(results.Path, LDAPUser, LDAPPassword);
return
ADUserDetail.GetUser(user);
}
else
{
return
null;
}
}
catch (Exception ex)
{
return
null;
}
}
public ADUserDetail GetUserByLoginName(String userName)
{
try
{
_directoryEntry = null;
DirectorySearcher directorySearch =
new DirectorySearcher(SearchRoot);
directorySearch.Filter = "(&(objectClass=user)(SAMAccountName=" + userName +
"))";
SearchResult results = directorySearch.FindOne();
if (results !=
null)
{
DirectoryEntry user =
new DirectoryEntry(results.Path, LDAPUser, LDAPPassword);
return
ADUserDetail.GetUser(user);
}
return
null;
}
catch (Exception ex)
{
return
null;
}
}
///<summary>
/// This function will take a DL or Group name and return list of users
///</summary>
///<param name="groupName"></param>
///<returns></returns>
public List<ADUserDetail> GetUserFromGroup(String groupName)
{
List<ADUserDetail> userlist =
new List<ADUserDetail>();
try
{
_directoryEntry = null;
DirectorySearcher directorySearch =
new DirectorySearcher(SearchRoot);
directorySearch.Filter = "(&(objectClass=group)(SAMAccountName=" + groupName +
"))";
SearchResult results = directorySearch.FindOne();
if (results !=
null)
{
DirectoryEntry deGroup =
new DirectoryEntry(results.Path, LDAPUser, LDAPPassword);
System.DirectoryServices.PropertyCollection pColl = deGroup.Properties;
int count = pColl["member"].Count;
for (int i = 0; i < count; i++)
{
string respath = results.Path;
string[] pathnavigate = respath.Split("CN".ToCharArray());
respath = pathnavigate[0];
string objpath = pColl["member"][i].ToString();
string path = respath + objpath;
DirectoryEntry user =
new DirectoryEntry(path, LDAPUser, LDAPPassword);
ADUserDetail userobj =
ADUserDetail.GetUser(user);
userlist.Add(userobj);
user.Close();
}
}
return userlist;
}
catch (Exception ex)
{
return userlist;
}
}
#region Get user with First Name
public List<ADUserDetail>GetUsersByFirstName(string fName)
{
//UserProfile user;
List<ADUserDetail> userlist =
new List<ADUserDetail>();
string filter =
"";
_directoryEntry = null;
DirectorySearcher directorySearch =
new DirectorySearcher(SearchRoot);
directorySearch.Asynchronous = true;
directorySearch.CacheResults = true;
filter = string.Format("(givenName={0}*", fName);
// filter =
"(&(objectClass=user)(objectCategory=person)(givenName="+fName+
"*))";
directorySearch.Filter = filter;
SearchResultCollection userCollection = directorySearch.FindAll();
foreach (SearchResult users
in userCollection)
{
DirectoryEntry userEntry =
new DirectoryEntry(users.Path, LDAPUser, LDAPPassword);
ADUserDetail userInfo =
ADUserDetail.GetUser(userEntry);
userlist.Add(userInfo);
}
directorySearch.Filter = "(&(objectClass=group)(SAMAccountName=" +fName +
"*))";
SearchResultCollection results = directorySearch.FindAll();
if (results !=
null)
{
foreach (SearchResult r
in results)
{
DirectoryEntry deGroup =
new DirectoryEntry(r.Path, LDAPUser, LDAPPassword);
ADUserDetail agroup =
ADUserDetail.GetUser(deGroup);
userlist.Add(agroup);
}
}
return userlist;
}
#endregion
#region AddUserToGroup
public bool AddUserToGroup(string userlogin,
string groupName)
{
try
{
_directoryEntry = null;
ADManager admanager =
new ADManager(LDAPDomain, LDAPUser, LDAPPassword);
admanager.AddUserToGroup(userlogin, groupName);
return
true;
}
catch (Exception ex)
{
return
false;
}
}
#endregion
#region RemoveUserToGroup
public bool RemoveUserToGroup(string userlogin,
string groupName)
{
try
{
_directoryEntry = null;
ADManager admanager =
new ADManager("xxx", LDAPUser, LDAPPassword);
admanager.RemoveUserFromGroup(userlogin, groupName);
return
true;
}
catch (Exception ex)
{
return
false;
}
}
#endregion
}
}
How to use this class library
Just add DLL or reference of this project to your application and make an Instance ofActiveDirectoryHelper class. After an instance is created, you may call the functions and properties to perform the operations on AD.
Conclusion
This article explained all operations on Active Directory using c#. Thanks for reading.相关文章推荐
- Query Active Directory Users using C#[转]
- How to authenticate against the Active Directory by using Forms authentication and Visual C# .NET
- How to perform AD(MS Active Directory) Authentication using JNDI from Java?
- 1202530 - Error: "HTTP Status 500"" when attempting to log on to Java InfoView using Active Directory(配置BOSSO出现的问题解决方案)
- Get a Complete Computer List From Active Directory Using .NET 2.0
- Installing Active Directory on Windows Server 2008 R2 Enterprise 64-bit
- How to load all files from directory using JQuery ?
- Running Exchange 2007 on Active Directory Server
- [转载]Querying Microsoft Active Directory Using Microsoft .NET Framework Library
- Multithreading on iOS And Mac OS X Using NSOperations
- MFC几个常用函数:OnCreate和OnInitialUpDate,GetActiveFrame和MDIGetActive,Invalidate、SetModifiedFlage、UpdateAll
- Data Compression :: Running RLE Algorithm on BMP and PGM Image Files Using C#
- Cascading all windows on a machine without using API's
- Create C# apps using SQL Server (2017) on RHEL
- Windows Azure Active Directory (3) China Azure AD增加新用户
- Force stop and then start a full crawl on all content sources in a SharePoint 2010 farm using PowerShell(转)
- modify AD property and password using C#
- AD-Powershell for Active Directory Administrators
- Using Forms Authentication with Active Directory
- 操作Active Directory C#