Esempio n. 1
0
        public static DirectoryEntry FindByName(string searchBase, string name, string user, string pass, SearchScope scope)
        {
            var search = searchBase.StartsWith("LDAP://") ? searchBase : $"LDAP://{searchBase}";

            IDirectorySearch ds = GetDirectorySearcher(search);

            IntPtr searchHandle = IntPtr.Zero;

            int hr = ds.ExecuteSearch($"(sAMAccountName={name})", _adProperties.ToArray(), _adProperties.Count, out searchHandle);

            if (Failed(hr))
            {
                throw ComException.BuildComException(hr, ds);
            }

            hr = ds.GetFirstRow(searchHandle);
            var de = new DirectoryEntry();

            foreach (var obj in _adProperties)
            {
                de.Add(obj, de.GetValue(ds, searchHandle, obj));
            }

            return(de);
        }
Esempio n. 2
0
        public DirectoryEntry(string dn)
        {
            _properties["distinguishedName"] = dn;
            IDirectorySearch ds = GetDirectorySearcher($"LDAP://{_properties["distinguishedName"].ToString()}");

            IntPtr searchHandle = IntPtr.Zero;

            int hr = ds.ExecuteSearch("(objectClass=*)", _adProperties.ToArray(), _adProperties.Count, out searchHandle);

            if (Failed(hr))
            {
                throw ComException.BuildComException(hr, ds);
            }

            hr = ds.GetFirstRow(searchHandle);
            foreach (var obj in _adProperties)
            {
                _properties[obj] = GetValue(ds, searchHandle, obj);
            }
        }