0

現在、新しい 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
4

1 に答える 1