Es necesario configurar un filtro (DirectorySearcher.Filter) algo como:
"(& (objectCategory = persona) (objectClass = user) (sAMAccountName = {0}))"
Tenga en cuenta que solo especifica el nombre de usuario (sin el dominio) para la propiedad sAMAccountName. Para buscar dominio \ usuario, primero busque el contexto de denominación para el dominio requerido, luego busque allí sAMAccountName.
Por cierto, al compilar cadenas de consulta LDAP utilizando String.Format, generalmente debe tener cuidado de evitar caracteres especiales. Probablemente no sea necesario para un nombre de cuenta, pero podría serlo si está buscando otras propiedades, como el primer nombre del usuario (propiedad givenName) o el apellido (propiedad sn). Tengo un método de utilidad EscapeFilterLiteral para hacer esto: se construye la cadena de la siguiente manera:
String.Format("(&(objectCategory=person)(objectClass=user)(sn={0}))",
EscapeFilterLiteral(lastName, false));
donde EscapeFilterLiteral se implementa de la siguiente manera:
public static string EscapeFilterLiteral(string literal, bool escapeWildcards)
{
if (literal == null) throw new ArgumentNullException("literal");
literal = literal.Replace("\\", "\\5c");
literal = literal.Replace("(", "\\28");
literal = literal.Replace(")", "\\29");
literal = literal.Replace("\0", "\\00");
literal = literal.Replace("/", "\\2f");
if (escapeWildcards) literal = literal.Replace("*", "\\2a");
return literal;
}
Esta aplicación le permite tratar el carácter * como parte de la literal (escapeWildcard = true) o como un carácter comodín (escapeWildcard = false).
ACTUALIZACIÓN: Esto no tiene nada que ver con su pregunta, pero el ejemplo que publicó no llama a Dispose sobre los objetos desechables que utiliza. Al igual que todos los objetos desechables, estos objetos (DirectoryEntry, DirectorySearcher, SearchResultCollection) siempre deben desecharse, normalmente con la instrucción using. Vea this post para más información.
¿Cómo * primero localizar el contexto de nomenclatura para el dominio deseado, a continuación, buscar allí *? – Sam