Búsqueda de contenido en archivos XLS en recurso compartido: solución definitiva en Windows Server 2022 y Windows 11

¿La búsqueda en una carpeta compartida encuentra texto en PDF y XLSX pero no en XLS? En un entorno con servidor de archivos y equipos cliente, el culpable casi siempre es la ausencia o mala asociación del IFilter para Excel de formato antiguo. Aquí tienes un procedimiento probado para restablecer el indexado.

Índice

Situación típica

Un servidor con el servicio de búsqueda instalado y con el índice ya construido expone una carpeta compartida a usuarios que trabajan desde equipos cliente. La búsqueda por contenido funciona en documentos modernos y en PDF, pero no devuelve resultados cuando la cadena buscada está dentro de libros de Excel guardados en formato binario clásico. Se han marcado los tipos de archivo, se ha activado la opción de indizar el contenido y se ha reconstruido el índice sin éxito.

Qué está pasando realmente

Los archivos con extensión .xlsx son contenedores abiertos basados en XML. Windows puede extraer su texto con filtros incluidos en el sistema o registrados por Office. En cambio, los archivos .xls tradicionales usan BIFF, un formato binario que requiere un complemento de filtrado de contenido denominado IFilter. Si el IFilter específico para Excel clásico no está instalado, está a 32 bits en un sistema de 64 bits, o no está correctamente vinculado a la extensión, el indizador solo ve propiedades básicas y nunca el contenido de celdas. Resultado: cero coincidencias en búsquedas de texto dentro de libros antiguos.

Diagnóstico rápido

  • Desde el servidor, abre Opciones de indizaciónAvanzadasTipos de archivo y selecciona xls. Comprueba que esté en Indexar propiedades y contenido del archivo y que la Descripción del filtro muestre un filtro de Microsoft Office o Excel. Si aparece Filtro de texto sin formato o nada, confirma la causa.
  • En un cliente, crea un archivo de prueba .xls con una cadena única, por ejemplo XLSTEST123, guárdalo en el recurso compartido y búscalo por contenido. Si no aparece, el servidor no está extrayendo texto del formato antiguo.
  • Revisa el Visor de eventos del servidor en los registros de búsqueda. Mensajes con ifilter, filter, gatherer o Access is denied orientan la corrección.

Plan de acción recomendado

Aplica los pasos en orden de mayor impacto. En la mayoría de entornos, con el primero y el segundo paso se resuelve definitivamente.

  1. Verifica y corrige la asociación del filtro para la extensión .xls desde la consola de Tipos de archivo. Debe quedar en Propiedades y contenido y con filtro de Office.
  2. Instala un IFilter compatible de sesenta y cuatro bits para el formato clásico de Excel. Existen dos caminos admitidos:
    • Filter Pack heredado. Válido en servidores que no ejecutan Office. Registra los filtros para documentos de Office antiguos, incluido Excel clásico.
    • Microsoft Apps. La instalación de los componentes de Office registra los filtros necesarios. Es la vía más soportada en entornos con Microsoft 365.
    Evita mezclar filtros de treinta y dos y sesenta y cuatro bits. En un servidor de sesenta y cuatro bits, todo debe ser de esa arquitectura.
  3. Reinicia el servicio de búsqueda y reconstruye el índice desde Opciones avanzadas. Comprueba asimismo que el volumen donde reside el recurso compartido permite Permitir que los archivos de esta unidad tengan el contenido indizado.
  4. Valida desde un cliente con el archivo de prueba y confirma que el resultado de búsqueda proviene del índice remoto del servidor.
  5. Descarta bloqueos y casos especiales como antivirus que interceptan el proceso de indexación o archivos protegidos con contraseña.

Comprobaciones clave en el servidor

Verificación en la consola de indización

  1. Abre Panel de controlOpciones de indizaciónAvanzadas.
  2. En la pestaña Tipos de archivo, localiza xls y confirma:
    • Indexar propiedades y contenido del archivo activado.
    • Descripción del filtro mostrando un filtro de Office o Excel, no Texto sin formato.

Si la descripción no es la esperada, instala o repara el filtro como se indica más abajo.

Comprobación de la asociación del IFilter en el registro

Sin tocar configuraciones sensibles, puedes inspeccionar la cadena de asociación del filtro para .xls con estos comandos. No cambian nada: solo leen.

rem Obtiene el controlador persistente de .xls
reg query HKCR\.xls /v PersistentHandler

rem Con la GUID anterior, consulta el filtro asociado al contrato IFilter
rem El identificador del contrato IFilter es {89BCB740-6119-101A-BCB7-00DD010655AF}
reg query "HKCR\CLSID{GUID\DEL\PERSISTENTHANDLER}\PersistentAddinsRegistered{89BCB740-6119-101A-BCB7-00DD010655AF}" /ve

rem Con la GUID devuelta arriba, valida la DLL que implementa el filtro
reg query "HKCR\CLSID{GUID\DEL\FILTRO}\InprocServer32" /ve 

La ruta de la DLL debe apuntar a una ubicación de sesenta y cuatro bits (por ejemplo, Program Files), no a Program Files (x86). Si está en una ruta de treinta y dos bits o la clave no existe, el indizador no podrá leer contenido de .xls.

Estado del servicio

El servicio que realiza el trabajo es WSearch. Asegura que esté iniciado y sin errores.

powershell
Get-Service -Name WSearch | Format-List Status,StartType,DisplayName

Reinicio controlado del servicio:

powershell
Stop-Service WSearch -Force
Start-Service WSearch

Atributos del volumen y permisos

  • En las propiedades de la unidad que aloja el recurso, marca Permitir que los archivos de esta unidad tengan el contenido indizado además de las propiedades de archivo.
  • Comprueba que las cuentas del servicio de búsqueda y del sistema tienen lectura sobre las rutas indexadas.

Instalación del filtro correcto

Opción con paquete de filtros

Instala el paquete de filtros de Office de sesenta y cuatro bits en el servidor de archivos. Tras la instalación, vuelve a Tipos de archivo, confirma que .xls aparece con un filtro de Office y no como texto plano, y deja marcada la indexación de propiedades y contenido.

Opción con aplicaciones de Microsoft

Si tu estándar corporativo permite tener componentes de Office en el servidor de archivos, instalar Microsoft Apps registra los filtros necesarios. Puedes seleccionar una instalación mínima, solo con los módulos que registran los filtros, deshabilitando aplicaciones que no necesitas. Esta opción suele tener mejor soporte a largo plazo.

Buenas prácticas de arquitectura

  • No mezcles binarios de treinta y dos bits en un servidor de sesenta y cuatro bits. Si lo hiciste, desinstálalos primero.
  • Evita instalaciones simultáneas de varias ediciones de Office o de paquetes de filtros superpuestos. Mantén una única fuente de IFilters para documentos de Office.
  • Después de cualquier instalación o reparación, reinicia el servicio de búsqueda y valida el estado del índice.

Reconstrucción del índice

Reinicio y reconstrucción desde la interfaz

  1. Abre Opciones de indizaciónAvanzadasReconstruir.
  2. Espera a que el estado vuelva a Completado. En volúmenes grandes, el proceso consume tiempo, por lo que conviene planificar una ventana tranquila.

Reconstrucción con línea de comandos

Si la interfaz no está disponible, puedes forzar una reconstrucción con comandos administrativos. Úsalo solo si conoces el impacto.

powershell
Reinicia el servicio
Restart-Service WSearch -Force

Opción avanzada: purgar la base de datos del índice para forzar reconstrucción total

ADVERTENCIA: esto borra y vuelve a crear el índice desde cero.

Stop-Service WSearch -Force
\$path = "\$Env\:ProgramData\Microsoft\Search\Data\Applications\Windows\Windows.edb"
if (Test-Path \$path) { Remove-Item \$path -Force }
Start-Service WSearch </code></pre>

<h3>Prueba con archivo de control</h3>
<ol>
  <li>En el servidor o en un cliente con Excel, crea un libro en formato clásico con la cadena única:
    <pre><code>powershell
Requiere Excel instalado para automatización COM
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$wb = $excel.Workbooks.Add()
$ws = $wb.Worksheets.Item(1)
$ws.Cells.Item(1,1).Value2 = "XLSTEST123"
xlWorkbookNormal = -4143 => formato .xls clásico
$target = "\\servidor\recurso\pruebas\test_ifilter.xls"
$wb.SaveAs($target, -4143)
$wb.Close($true)
$excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($ws) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($wb) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null

Desde el Explorador del cliente, busca XLSTEST123 en la carpeta compartida. Debe aparecer el archivo test_ifilter.xls. Si no aparece, revisa eventos y vuelve a confirmar la asociación del filtro.

Revisión de eventos para diagnóstico fino

La instrumentación de búsqueda registra pistas muy útiles. Crea una vista personalizada en el Visor de eventos:

  1. Abre Visor de eventosRegistros de aplicaciones y serviciosMicrosoftWindowsSearch.
  2. Activa el canal Operational si estuviera deshabilitado.
  3. Crea una Vista personalizada que filtre por orígenes Search y Search-Core, y añade palabras clave como ifilter, filter, gatherer, Access is denied.

Eventos útiles que puedes encontrar:

  • Inicio del servicio y estado del indizador. Confirma que el servicio arranca sin errores.
  • Errores del recopilador al acceder a rutas del recurso compartido, con códigos de acceso denegado o rutas no disponibles.
  • Incidencias de filtro, indicando la imposibilidad de cargar o ejecutar un IFilter.

En clientes, explora también el registro Microsoft Windows Search UI Operational para ver cómo se emiten las consultas y si se intenta usar el índice remoto.

powershell
Exportar eventos del servidor relacionados con búsqueda a un archivo EVTX
$logs = @(
  "Microsoft-Windows-Search/Operational"
)
$logs | ForEach-Object {
  wevtutil epl $ "C:\Temp\Search$($_.Split('/')[-1]).evtx"
}

Descartes y casos especiales

  • Archivos protegidos. Libros clásicos protegidos con contraseña o cifrados no exponen contenido al indizador.
  • Exclusiones de seguridad. Soluciones AV o EDR pueden impedir la carga de SearchIndexer.exe, SearchProtocolHost.exe o SearchFilterHost.exe contra ciertas rutas. Revisa políticas y, si procede, crea exclusiones limitadas y justificadas.
  • Formatos relacionados. Plantillas .xlt y complementos .xla heredados comparten el mismo filtro. Asegura que también figuren como Propiedades y contenido en la lista de tipos.
  • Propiedades sin contenido. Si en Tipos de archivo la extensión aparece configurada solo para Propiedades, jamás verás coincidencias por contenido.

Validación desde clientes

Para asegurarte de que el cliente está aprovechando el índice del servidor, verifica estas opciones locales:

  • En el Explorador → Opciones de carpetaBuscar, deja marcado Buscar siempre en nombres de archivo y contenido para ubicaciones no indizadas. No sustituye al índice del servidor, pero ayuda en escenarios mixtos.
  • Observa la velocidad de respuesta. Cuando el índice remoto responde, los resultados de contenido en la carpeta compartida aparecen casi al instante, sin consumir CPU del cliente.

Tabla de decisión

SíntomaIndicio técnicoAcción recomendada
No hay resultados en libros clásicosEl filtro mostrado es texto plano o vacíoInstala y registra el IFilter de Office de sesenta y cuatro bits
Resultados irregularesFiltro correcto pero índice incompletoReconstruye el índice y valida con archivo de prueba
Errores de accesoEventos de recopilador con acceso denegadoRevisa permisos NTFS y del servicio
Fallo tras instalar paquetesRutas de DLL en carpeta de treinta y dos bitsDesinstala filtros de treinta y dos bits y reinstala en sesenta y cuatro bits

Procedimiento de corrección resumido

  1. Confirma en Tipos de archivo que .xls use un filtro de Office y que se indice Propiedades y contenido.
  2. Instala un IFilter de sesenta y cuatro bits válido para documentos de Office antiguos o registra los filtros incluidos con Microsoft Apps.
  3. Reinicia WSearch y reconstruye el índice.
  4. Valida con un libro de prueba en formato clásico con una cadena única.
  5. Si persisten problemas, revisa eventos de búsqueda y posibles interferencias de seguridad.

Preguntas frecuentes

¿Por qué PDF y XLSX sí funcionan? Porque sus filtros están presentes o integrados; el problema se limita al formato binario clásico que depende de un filtro adicional.

¿Es necesario instalar Office en el servidor? No necesariamente. Puedes usar paquetes de filtros. Instalar Office es otra vía admitida en entornos que ya lo contemplan.

¿Puedo mantener filtros de treinta y dos bits? No en servidores de sesenta y cuatro bits. Los procesos del indizador cargan filtros de su misma arquitectura.

¿Los libros protegidos se indizan? No. Si exigen contraseña para abrir, el IFilter no puede extraer texto.

¿Cuándo reconstruir el índice por completo? Tras instalar filtros o cambiar asociaciones. Una reconstrucción asegura que el contenido existente sea vuelto a procesar con el filtro correcto.

Comandos útiles adicionales

Consulta rápida del estado del índice:

powershell
Cantidad de elementos y estado general
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows Search" |
  Select-Object SetupCompletedSuccessfully,DataDirectory

Tamaño de la base Windows.edb

Get-ChildItem "\$Env\:ProgramData\Microsoft\Search\Data\Applications\Windows\Windows.edb" |
Select-Object FullName,Length,LastWriteTime 

Consulta del filtro asociado a varias extensiones relacionadas con Excel clásico:

cmd
for %E in (.xls .xlt .xla) do (
  echo ==== %E ====
  reg query HKCR\%E /v PersistentHandler
)

Lista de verificación final

  • Filtro de Office presente y asociado a .xls con indexación de propiedades y contenido.
  • Paquete de filtros o componentes de Office instalados en la arquitectura correcta.
  • Servicio WSearch operativo y base de índice reconstruida.
  • Volumen del recurso compartido con contenido indizable habilitado.
  • Archivo de prueba .xls encontrado por contenido desde un cliente.
  • Eventos de búsqueda sin errores recurrentes de filtro o acceso.

Conclusión práctica

Cuando la búsqueda de contenido en una carpeta compartida falla únicamente sobre libros clásicos, la explicación más probable es la ausencia o el mal registro del IFilter para el formato binario de Excel. Asegurar un filtro de sesenta y cuatro bits, reasociarlo a la extensión .xls, reconstruir el índice y validar con un archivo de control resuelve el problema en la amplia mayoría de casos. Con PDF y libros modernos funcionando, el foco debe ponerse en el filtro de Excel clásico y en su correcta asociación dentro del motor de búsqueda del servidor.

Índice