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); }
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); } }