设为首页收藏本站

 找回密码
 注册

QQ登录

只需一步,快速开始

BCM 门户 IT世界 应用开发 查看内容

Active Directory Objects and C#

2012-2-6 09:47| 发布者: Test| 查看: 1402| 评论: 0

摘要: Update : A newer version which is using .Net 3.5 System.DirectoryServices.AccountManagement I had created a new version hereIf you are wondering how to access an Active Directory Objects using C# plea ...
    /// <summary>
    /// This Method will Get the Array List of the Directory Object Attribute
    /// </summary>
    /// <param name="sAttributeName"></param>
    /// <param name="sUserName"></param>
    /// <param name="oValuesCollection"></param>
    /// <returns></returns>
    public ArrayList AttributeValuesMultiString(string sAttributeName, string sUserName, ArrayList oValuesCollection)
    {
        oDE = GetUser(sUserName);

        PropertyValueCollection oValueCollection = oDE.Properties[sAttributeName];
        IEnumerator oIEn = oValueCollection.GetEnumerator();

        while (oIEn.MoveNext())
        {
            if (oIEn.Current != null)
            {
                if (!oValuesCollection.Contains(oIEn.Current.ToString()))
                {
                    oValuesCollection.Add(oIEn.Current.ToString());
                }
            }
        }
        oDE.Close();
        oDE.Dispose();
        return oValuesCollection;
    }

    #endregion

    #region Internal Methods

    /// <summary>
    /// This will read in the ADServer Value from the Web.config and will Return it
    /// as an LDAP Path
    /// eg. DC=testing, DC=co, DC=nz.
    /// This is required when Creating Directory Entry other than the Root.
    /// </summary>
    /// <returns></returns>
    private string GetLDAPDomain()
    {
        StringBuilder LDAPDomain = new StringBuilder();
        string[] LDAPDC = sADServer.Split('.');

        for (int i = 0; i < LDAPDC.GetUpperBound(0) + 1; i++)
        {
            LDAPDomain.Append("DC=" + LDAPDC[i]);
            if (i < LDAPDC.GetUpperBound(0))
            {
                LDAPDomain.Append(",");
            }
        }
        return LDAPDomain.ToString();
    }

    /// <summary>
    /// This method will Create a Dataset Stucture Containing all Relevant Fields for a User Object
    /// </summary>
    /// <returns></returns>
    private DataSet CreateUserDataSet()
    {
        oDs = new DataSet();

        oTb = oDs.Tables.Add("User");

        //Create All the Columns
        oTb.Columns.Add("company");
        oTb.Columns.Add("department");
        oTb.Columns.Add("description");
        oTb.Columns.Add("displayName");
        oTb.Columns.Add("facsimileTelephoneNumber");
        oTb.Columns.Add("givenName");
        oTb.Columns.Add("homePhone");
        oTb.Columns.Add("employeeNumber");
        oTb.Columns.Add("initials");
        oTb.Columns.Add("ipPhone");
        oTb.Columns.Add("l");
        oTb.Columns.Add("mail");
        oTb.Columns.Add("manager");
        oTb.Columns.Add("mobile");
        oTb.Columns.Add("name");
        oTb.Columns.Add("pager");
        oTb.Columns.Add("physicalDeliveryOfficeName");
        oTb.Columns.Add("postalAddress");
        oTb.Columns.Add("postalCode");
        oTb.Columns.Add("postOfficeBox");
        oTb.Columns.Add("sAMAccountName");
        oTb.Columns.Add("sn");
        oTb.Columns.Add("st");
        oTb.Columns.Add("street");
        oTb.Columns.Add("streetAddress");
        oTb.Columns.Add("telephoneNumber");
        oTb.Columns.Add("title");
        oTb.Columns.Add("userPrincipalName");
        oTb.Columns.Add("wWWHomePage");
        oTb.Columns.Add("whenCreated");
        oTb.Columns.Add("whenChanged");
        oTb.Columns.Add("distinguishedName");
        oTb.Columns.Add("info");

        return oDs;
    }

    /// <summary>
    /// This method will Create a Dataset Stucture Containing all Relevant Fields for a Group Object
    /// </summary>
    /// <param name="sTableName"></param>
    /// <returns></returns>
    private DataSet CreateGroupDataSet(string sTableName)
    {

        oDs = new DataSet();

        oTb = oDs.Tables.Add(sTableName);

        //Create all the Columns
        oTb.Columns.Add("distinguishedName");
        oTb.Columns.Add("name");
        oTb.Columns.Add("friendlyname");
        oTb.Columns.Add("description");
        oTb.Columns.Add("domainType");
        oTb.Columns.Add("groupType");
        oTb.Columns.Add("groupTypeDesc");

        return oDs;
    }

    /// <summary>
    /// This Method will Return a DataRow Object which will be added to the User Dataset Object
    /// </summary>
    /// <param name="oUserSearchResult"></param>
    /// <param name="oUserTable"></param>
    /// <returns></returns>
    private DataRow PopulateUserDataSet(SearchResult oUserSearchResult, DataTable oUserTable)
    {
        //Sets a New Empty Row
        oRwUser = oUserTable.NewRow();

        oRwUser["company"] = GetProperty(oUserSearchResult, "company");
        oRwUser["department"] = GetProperty(oUserSearchResult, "department");
        oRwUser["description"] = GetProperty(oUserSearchResult, "description");
        oRwUser["displayName"] = GetProperty(oUserSearchResult, "displayName");
        oRwUser["facsimileTelephoneNumber"] = GetProperty(oUserSearchResult, "facsimileTelephoneNumber");
        oRwUser["givenName"] = GetProperty(oUserSearchResult, "givenName");
        oRwUser["homePhone"] = GetProperty(oUserSearchResult, "homePhone");
        oRwUser["employeeNumber"] = GetProperty(oUserSearchResult, "employeeNumber");
        oRwUser["initials"] = GetProperty(oUserSearchResult, "initials");
        oRwUser["ipPhone"] = GetProperty(oUserSearchResult, "ipPhone");
        oRwUser["l"] = GetProperty(oUserSearchResult, "l");
        oRwUser["mail"] = GetProperty(oUserSearchResult, "mail");
        oRwUser["manager"] = GetProperty(oUserSearchResult, "manager");
        oRwUser["mobile"] = GetProperty(oUserSearchResult, "mobile");
        oRwUser["name"] = GetProperty(oUserSearchResult, "name");
        oRwUser["pager"] = GetProperty(oUserSearchResult, "pager");
        oRwUser["physicalDeliveryOfficeName"] = GetProperty(oUserSearchResult, "physicalDeliveryOfficeName");
        oRwUser["postalAddress"] = GetProperty(oUserSearchResult, "postalAddress");
        oRwUser["postalCode"] = GetProperty(oUserSearchResult, "postalCode");
        oRwUser["postOfficeBox"] = GetProperty(oUserSearchResult, "postOfficeBox");
        oRwUser["sAMAccountName"] = GetProperty(oUserSearchResult, "sAMAccountName");
        oRwUser["sn"] = GetProperty(oUserSearchResult, "sn");
        oRwUser["st"] = GetProperty(oUserSearchResult, "st");
        oRwUser["street"] = GetProperty(oUserSearchResult, "street");
        oRwUser["streetAddress"] = GetProperty(oUserSearchResult, "streetAddress");
        oRwUser["telephoneNumber"] = GetProperty(oUserSearchResult, "telephoneNumber");
        oRwUser["title"] = GetProperty(oUserSearchResult, "title");
        oRwUser["userPrincipalName"] = GetProperty(oUserSearchResult, "userPrincipalName");
        oRwUser["wWWHomePage"] = GetProperty(oUserSearchResult, "wWWHomePage");
        oRwUser["whenCreated"] = GetProperty(oUserSearchResult, "whenCreated");
        oRwUser["whenChanged"] = GetProperty(oUserSearchResult, "whenChanged");
        oRwUser["distinguishedName"] = GetProperty(oUserSearchResult, "distinguishedName");
        oRwUser["info"] = GetProperty(oUserSearchResult, "info");

        return oRwUser;

    }

    /// <summary>
    /// This Method will Return a DataRow object which will be added to the Group Dataset Object
    /// </summary>
    /// <param name="oSearchResult"></param>
    /// <param name="oTable"></param>
    /// <returns></returns>
    private DataRow PopulateGroupDataSet(SearchResult oSearchResult, DataTable oTable)
    {
        //Sets a New Empty Row
        oRwResult = oTable.NewRow();

        string sFullOU = GetProperty(oSearchResult, "distinguishedName");
        string[] splita = sCharactersToTrim.ToString().Split(new Char[] { ';' });
        foreach (string sa in splita)
        {
            sFullOU = sFullOU.Replace(sa, "");
        }

        string sDisplayName = "";
        string sRawString = "";
        string[] split1 = sFullOU.Split(new Char[] { ',' });
        foreach (string s1 in split1)
        {
            sRawString = s1;
            sRawString = sRawString.Replace("OU=""");
            sRawString = sRawString.Replace("DC=""");
            sRawString = sRawString.Replace("CN=""");
            sDisplayName = sRawString + "/" + sDisplayName;
        }

        oRwResult["distinguishedName"] = GetProperty(oSearchResult, "distinguishedName");
        oRwResult["name"] = GetProperty(oSearchResult, "name");
        oRwResult["friendlyname"] = sDisplayName.Substring(0, sDisplayName.Length - 1); ;
        oRwResult["description"] = GetProperty(oSearchResult, "description");
        oRwResult["domainType"] = sADServer;

        string sGroupType = GetProperty(oSearchResult, "groupType");
        oRwResult["groupType"] = sGroupType;

        switch (sGroupType)
        {
            case "2": oRwResult["groupTypeDesc"] = "Global, Distribution"break;
            case "4": oRwResult["groupTypeDesc"] = "Domain, Distribution"break;
            case "8": oRwResult["groupTypeDesc"] = "Universal, Distribution"break;
            case "-2147483640": oRwResult["groupTypeDesc"] = "Universal, Security"break;
            case "-2147483646": oRwResult["groupTypeDesc"] = "Global, Security"break;
            case "-2147483644": oRwResult["groupTypeDesc"] = "Domain, Security"break;
            default: oRwResult["groupTypeDesc"] = ""break;
        }

        return oRwResult;

    }

    #endregion
    #endregion

}

}
123

鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

手机版|小黑屋|BC Morning Website ( Best Deal Inc. 001 )  

GMT-8, 2025-12-13 12:13 , Processed in 0.012545 second(s), 17 queries .

Supported by Best Deal Online X3.5

© 2001-2025 Discuz! Team.

返回顶部