我目前遇到一个问题,即我无法将我的组织单位识别为创建新 Active Directory 用户并将其分配给 OU 的参数。它给了我错误,“GetPrincipalContext”需要 1 个参数,而我因为出了什么问题而迷失了方向。如果需要更多信息,请告诉我。
#region Variables
private string sdomain = "test";
private string sdefaultou = "OU=Dackup Users, OU=Dackup, DC=Test, Dc=com";
private string sdefaultrootOU = "DC=test, DC=com";
private string sServiceUser = @"ServiceUser";
private string sServicePassword = "ServicePassword";
private string sGroup = "Dackup";
private string sUserName = "LocalTest";
private string sOU = "Organizational Unit locations";
#endregion
#region Validate
public PrincipalContext GetPrincipalContext()//(string sdomain, string sdefaultou, string sservicepassword
{
PrincipalContext oPrincipal = new PrincipalContext(ContextType.Domain, sdomain, sdefaultou, ContextOptions.SimpleBind, sServiceUser, sServicePassword);
return oPrincipal;
}
public UserPrincipal GetUser(string sUserName)
{
PrincipalContext oPrinciple = GetPrincipalContext();
UserPrincipal oUserprinciple = UserPrincipal.FindByIdentity(oPrinciple, sUserName);
return oUserprinciple;
}
public bool IsUserExisting(string sUserName)
{
if (GetUser(sUserName) == null)
{
return false;
}
else
{
return true;
}
}
/* public bool ValidateCredential (string sUserName, string sPassword)
{
PrincipalContext oprincipalc = "fix"();
return oprincipalc.ValidateCredentials(sUserName, sPassword);
} */
public UserPrincipal CreateNewUser(string sOU, string sUserName, string sPassword, string sGivenName, string sSurname)
{
if (!IsUserExisting(sUserName))
{
PrincipalContext oPrincipalContext = GetPrincipalContext(sOU); //This is where the error occurs
UserPrincipal oUserPrincipal = new UserPrincipal(oPrincipalContext, sUserName, sPassword, true /*Enabled or not*/);
//User Log on Name
oUserPrincipal.UserPrincipalName = sUserName;
oUserPrincipal.GivenName = sGivenName;
oUserPrincipal.Surname = sSurname;
oUserPrincipal.Save();
return oUserPrincipal;
}
else
{
return GetUser(sUserName);
}
}
public GroupPrincipal GetGroup(string sGroup)
{
PrincipalContext oPrincipal = GetPrincipalContext();
GroupPrincipal ogroup = GroupPrincipal.FindByIdentity(oPrincipal, sGroup);
return ogroup;
}
public bool IsUserGroupMember(string sGroup, string sUserName)
{
UserPrincipal oUser = GetUser(sUserName);
GroupPrincipal ogroup = GetGroup(sGroup);
if (oUser != null && ogroup != null)
{
return ogroup.Members.Contains(oUser);
}
else
{
return false;
}
}
public bool AddUserToGroup(string sUserName, string sGroup)
{
try
{
UserPrincipal oUserPrincipal = GetUser(sUserName);
GroupPrincipal oGroupPrincipal = GetGroup(sGroup);
if (oUserPrincipal != null && oGroupPrincipal != null)
{
if (!IsUserGroupMember(sUserName, sGroup))
{
oGroupPrincipal.Members.Add(oUserPrincipal);
oGroupPrincipal.Save();
}
}
return true;
}
catch
{
return false;
}
}
private void button1_Click(object sender, EventArgs e)
{
CreateNewUser();
}
}
#endregion