Exemple #1
0
        /// <summary>
        /// return Datatable from container
        /// </summary>
        /// <param name="aDContainer"></param>
        public DataTable FillDataTableFromADContainer(DirectoryEntry aDContainer)
        {
            try
            {
                if (aDContainer == null)
                {
                    return(null);
                }
                DataTable containerData = new DataTable();
                containerData.Columns.Add("Property", typeof(string));
                containerData.Columns.Add("Value", typeof(string));
                foreach (object ADProperties in aDContainer.Properties.PropertyNames)
                {
                    if (!(ADProperties.ToString().Contains("ms-Mcs-AdmPwdExpirationTime") | (ADProperties.ToString().Contains("ms-Mcs-AdmPwd"))))
                    {
                        IADsPropertyList  oPropList  = (aDContainer.NativeObject as IADsPropertyList);
                        IADsPropertyEntry oPropEntry = (oPropList.GetPropertyItem(ADProperties.ToString(), (int)ADSTYPEENUM.ADSTYPE_UNKNOWN) as IADsPropertyEntry);
                        int    iADsType = oPropEntry.ADsType;
                        string teste    = PropertyToString(aDContainer, oPropEntry, iADsType);
                        containerData.Rows.Add(ADProperties.ToString(), teste);

                        // ListViewItem ListItem = new ListViewItem(ADProperties.ToString(), 0);
                        //ListItem.SubItems.Add(PropertyToString(aDContainer, oPropEntry, iADsType));
                    }
                }
                return(containerData);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message, "Error while populating the Datatable", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(null);
            }
        }
Exemple #2
0
        /// <summary>
        /// Populates the list from the container which was clicked on the treeview
        /// </summary>
        /// <param name="aDContainer"></param>
        public void FillListViewFromADContainer(ref ListView ctr_list, DirectoryEntry aDContainer)
        {
            //Fill the ListView Element
            try
            {
                if (aDContainer == null)
                {
                    return;
                }
                ctr_list.Items.Clear();

                foreach (object ADProperties in aDContainer.Properties.PropertyNames)
                {
                    if (!(ADProperties.ToString().Contains("ms-Mcs-AdmPwdExpirationTime") | (ADProperties.ToString().Contains("ms-Mcs-AdmPwd"))))
                    {
                        IADsPropertyList  oPropList  = (aDContainer.NativeObject as IADsPropertyList);
                        IADsPropertyEntry oPropEntry = (oPropList.GetPropertyItem(ADProperties.ToString(), (int)ADSTYPEENUM.ADSTYPE_UNKNOWN) as IADsPropertyEntry);
                        int iADsType = oPropEntry.ADsType;

                        ListViewItem ListItem = new ListViewItem(ADProperties.ToString(), 0);
                        ListItem.SubItems.Add(PropertyToString(aDContainer, oPropEntry, iADsType));
                        ctr_list.Items.AddRange(new ListViewItem[] { ListItem });
                    }
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message, "Error while populating the list", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Exemple #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="aEntry"></param>
        /// <param name="aPropEntry"></param>
        /// <param name="aADsType"></param>
        /// <returns></returns>
        public string PropertyToString(DirectoryEntry aEntry, IADsPropertyEntry aPropEntry, int aADsType)
        {
            List <string> alsValues = new List <string>();
            ADSTYPEENUM   oEnum     = (ADSTYPEENUM)aADsType;

            try
            {
                foreach (IADsPropertyValue oPropValue in (object[])aPropEntry.Values)
                {
                    switch (oEnum)
                    {
                    case ADSTYPEENUM.ADSTYPE_DN_STRING:
                        alsValues.Add(oPropValue.DNString);
                        break;

                    case ADSTYPEENUM.ADSTYPE_CASE_EXACT_STRING:
                        alsValues.Add(oPropValue.CaseExactString);
                        break;

                    case ADSTYPEENUM.ADSTYPE_CASE_IGNORE_STRING:
                        alsValues.Add(oPropValue.CaseIgnoreString);
                        break;

                    case ADSTYPEENUM.ADSTYPE_PRINTABLE_STRING:
                        alsValues.Add(oPropValue.PrintableString);
                        break;

                    case ADSTYPEENUM.ADSTYPE_NUMERIC_STRING:
                        alsValues.Add(oPropValue.NumericString);
                        break;

                    case ADSTYPEENUM.ADSTYPE_BOOLEAN:
                        alsValues.Add(oPropValue.Boolean.ToString());
                        break;

                    case ADSTYPEENUM.ADSTYPE_INTEGER:
                        if (aPropEntry.Name == "primaryGroupID")
                        {
                            alsValues.Add(oPropValue.Integer.ToString() + m_Delimiter + "(" + GetPrimaryGroup(aEntry, null) + ")");
                        }
                        else
                        {
                            int iValue = oPropValue.Integer;
                            alsValues.Add(iValue.ToString() + m_Delimiter + "(Hex: 0x" + iValue.ToString("X") + ")");
                        }
                        break;

                    case ADSTYPEENUM.ADSTYPE_UTC_TIME:
                        alsValues.Add(oPropValue.UTCTime.ToString());
                        break;

                    case ADSTYPEENUM.ADSTYPE_OCTET_STRING:
                        // handle the objectSID
                        if (aPropEntry.Name == "objectSid")
                        {
                            // alsValues.Add(oPropValue.OctetString.ToString());
                            StringBuilder sbSID  = new StringBuilder();
                            byte[]        usrSID = (byte[])oPropValue.OctetString;

                            foreach (byte b in usrSID)
                            {
                                sbSID.AppendFormat("{0:x2}", b);
                            }

                            alsValues.Add(sbSID.ToString() + m_Delimiter + "(" + ObjectSidToString(usrSID) + ")");
                        }
                        else if (aPropEntry.Name == "objectGUID")
                        {
                            StringBuilder sbGUID  = new StringBuilder();
                            byte[]        usrGUID = (byte[])oPropValue.OctetString;

                            foreach (byte b in usrGUID)
                            {
                                sbGUID.AppendFormat("{0:x2}", b);
                            }

                            alsValues.Add(sbGUID.ToString() + m_Delimiter + "(CLSID-style: " + ObjectGUIDToStringGUID(sbGUID.ToString()) + ")");
                        }
                        else
                        {
                            alsValues.Add("(OCTET_STRING not yet supported)");
                        }
                        break;

                    case ADSTYPEENUM.ADSTYPE_LARGE_INTEGER:
                        try
                        {
                            Int64            iLargeInt = 0;
                            IADsLargeInteger int64Val  = (IADsLargeInteger)oPropValue.LargeInteger;
                            iLargeInt = int64Val.HighPart * 4294967296 + int64Val.LowPart;

                            // check for special cases
                            string sPropName = aPropEntry.Name.ToLower();
                            if (sPropName == "accountexpires" || sPropName == "badpasswordtime" || sPropName == "creationtime" ||
                                sPropName == "lastlogoff" || sPropName == "lastlogon" || sPropName == "pwdlastset")
                            {
                                string sTimeString = ConvertLargeIntToDate(iLargeInt);
                                alsValues.Add(sTimeString + m_Delimiter + iLargeInt.ToString());
                            }
                            else
                            {
                                alsValues.Add(iLargeInt.ToString() + m_Delimiter + "(Hex: 0x" + iLargeInt.ToString("X") + ")");
                            }
                        }
                        catch (Exception)
                        {
                            //
                        }

                        break;

                    case ADSTYPEENUM.ADSTYPE_CASEIGNORE_LIST:
                        alsValues.Add("(CASEIGNORE_LIST not yet supported)");
                        break;

                    case ADSTYPEENUM.ADSTYPE_PATH:
                        alsValues.Add("(PATH not yet supported)");
                        break;

                    case ADSTYPEENUM.ADSTYPE_INVALID:
                        alsValues.Add("(invalid ADs type: " + aADsType.ToString() + ")");
                        break;

                    case ADSTYPEENUM.ADSTYPE_PROV_SPECIFIC:
                        alsValues.Add("(PROV_SPECIFIC not yet supported)");
                        break;

                    case ADSTYPEENUM.ADSTYPE_OBJECT_CLASS:
                        alsValues.Add("(OBJECT_CLASS not yet supported)");
                        break;

                    case ADSTYPEENUM.ADSTYPE_OCTET_LIST:
                        alsValues.Add("(OCTET_LIST not yet supported)");
                        break;

                    case ADSTYPEENUM.ADSTYPE_POSTALADDRESS:
                        alsValues.Add("(POSTALADDRESS not yet supported)");
                        break;

                    case ADSTYPEENUM.ADSTYPE_TIMESTAMP:
                        alsValues.Add("(TIMESTAMP not yet supported)");
                        break;

                    case ADSTYPEENUM.ADSTYPE_BACKLINK:
                        alsValues.Add("(BACKLINK not yet supported)");
                        break;

                    case ADSTYPEENUM.ADSTYPE_TYPEDNAME:
                        alsValues.Add("(TYPEDNAME not yet supported)");
                        break;

                    case ADSTYPEENUM.ADSTYPE_HOLD:
                        alsValues.Add("(HOLD not yet supported)");
                        break;

                    case ADSTYPEENUM.ADSTYPE_NETADDRESS:
                        alsValues.Add("(NETADDRESS not yet supported)");
                        break;

                    case ADSTYPEENUM.ADSTYPE_REPLICAPOINTER:
                        alsValues.Add("(REPLICAPOINTER not yet supported)");
                        break;

                    case ADSTYPEENUM.ADSTYPE_FAXNUMBER:
                        alsValues.Add("(FAXNUMBER not yet supported)");
                        break;

                    case ADSTYPEENUM.ADSTYPE_EMAIL:
                        alsValues.Add("(EMAIL not yet supported)");
                        break;

                    case ADSTYPEENUM.ADSTYPE_NT_SECURITY_DESCRIPTOR:
                        alsValues.Add(aADsType.ToString());
                        break;

                    case ADSTYPEENUM.ADSTYPE_UNKNOWN:
                        alsValues.Add("(unknown AD type: " + aADsType.ToString() + ")");
                        break;

                    case ADSTYPEENUM.ADSTYPE_DN_WITH_BINARY:
                        alsValues.Add("(DN_WITH_BINARY not yet supported)");
                        break;

                    case ADSTYPEENUM.ADSTYPE_DN_WITH_STRING:
                        alsValues.Add("(DN_WITH_STRING not yet supported)");
                        break;

                    default:
                        alsValues.Add("(unknown AD type: " + aADsType.ToString() + ")");
                        break;
                    }
                }
            }
            catch { }

            if (alsValues.Count > 0)
            {
                StringBuilder oSB = new StringBuilder(alsValues[0].ToString());
                for (int ix = 1; ix < alsValues.Count; ix++)
                {
                    oSB.Append(m_Delimiter + alsValues[ix]);
                }

                return(oSB.ToString());
            }
            else
            {
                return(string.Empty);
            }
        }