Flow-Launcher/Flow.Launcher · warning · EngineNotAvailableException
The required service for Windows Index Search does not appea
Error message
The required service for Windows Index Search does not appear to be running
What it means
Thrown as EngineNotAvailableException when a Windows Index (OLE DB / WSearch) call surfaced a COMException and Settings.WarnWindowsSearchServiceOff is true. The exception's Action clears WarnWindowsSearchServiceOff and blanks the query, so the next search silently returns empty results instead of re-warning. The message tells the user the Windows Search service is not running.
Source
Thrown at Plugins/Flow.Launcher.Plugin.Explorer/Search/WindowsIndex/WindowsIndexSearchManager.cs:106
return WindowsIndexFilesAndFoldersSearchAsync(search, token: token);
}
public IAsyncEnumerable<SearchResult> ContentSearchAsync(string plainSearch, string contentSearch, CancellationToken token)
{
return WindowsIndexFileContentSearchAsync(contentSearch, token);
}
public IAsyncEnumerable<SearchResult> EnumerateAsync(string path, string search, bool recursive, CancellationToken token)
{
return WindowsIndexTopLevelFolderSearchAsync(search, path, recursive, token);
}
private IAsyncEnumerable<SearchResult> HandledEngineNotAvailableExceptionAsync()
{
if (!Settings.WarnWindowsSearchServiceOff)
return AsyncEnumerable.Empty<SearchResult>();
throw new EngineNotAvailableException(
"Windows Index",
Localize.plugin_explorer_windowsSearchServiceFix(),
Localize.plugin_explorer_windowsSearchServiceNotRunning(),
Constants.WindowsIndexErrorImagePath,
c =>
{
Settings.WarnWindowsSearchServiceOff = false;
// Clears the warning message so user is not mistaken that it has not worked
Main.Context.API.ChangeQuery(string.Empty);
return ValueTask.FromResult(false);
});
}
}
}
View on GitHub (pinned to 7fc63b07bb)
Solutions
- Start the Windows Search service: services.msc > Windows Search > Automatic, then Start.
- Rebuild the index from Control Panel > Indexing Options > Advanced > Rebuild if the catalog is corrupt.
- Enable the Windows Search optional feature if it was removed.
- If the user intentionally does not use Windows Index, switch Settings.IndexSearchEngine to Everything or DirectEnumeration so the COM path is never hit.
Example fix
// before - throw every time the service is off (until user clicks through)
if (!Settings.WarnWindowsSearchServiceOff)
return AsyncEnumerable.Empty<SearchResult>();
throw new EngineNotAvailableException(...);
// after - check the service once and remember the decision
if (!await IsWindowsSearchRunningAsync())
{
if (!Settings.WarnWindowsSearchServiceOff) return AsyncEnumerable.Empty<SearchResult>();
Settings.WarnWindowsSearchServiceOff = false;
throw new EngineNotAvailableException(...);
} Defensive patterns
Strategy: try-catch
Validate before calling
using var sc = new System.ServiceProcess.ServiceController("WSearch");
if (sc.Status != System.ServiceProcess.ServiceControllerStatus.Running)
logger.Warn("Windows Search service (WSearch) is not running."); Type guard
static bool IsWindowsSearchRunning() { try { using var sc = new System.ServiceProcess.ServiceController("WSearch"); return sc.Status == System.ServiceProcess.ServiceControllerStatus.Running; } catch { return false; } } Try / catch
try { await manager.SearchAsync(query, token); }
catch (EngineNotAvailableException ex) when (ex.EngineName == "Windows Index") { ShowWindowsSearchOffResult(ex); } Prevention
- Keep the WSearch service set to Automatic.
- Rebuild the index if the SystemIndex catalog is corrupt.
- Switch IndexSearchEngine to Everything or DirectEnumeration if Windows Index is intentionally disabled.
- Catch EngineNotAvailableException and offer to start the service.
When it happens
Trigger: Calling SearchAsync/ContentSearchAsync/EnumerateAsync on WindowsIndexSearchManager when the Windows Search service (WSearch) is stopped, disabled, or its SystemIndex catalog is corrupt and CreateQueryHelper() throws a COMException. PathIsIndexed returning false would not reach this throw; the throw comes from the COM path inside QueryConstructor.CreateQueryHelper().
Common situations: User disabled WSearch for performance; an SSD-tweaking tool disabled the service; the SystemIndex catalog is corrupt and rebuilding; Windows feature 'Windows Search' is turned off in optional features; the service crashed and did not auto-restart.
Related errors
- Warning: Everything service is not running
- It can be very slow without index (which is only supported i
- {e.Message}
- Failed to get IShellItemImageFactory
- Failed to get thumbnail
AI-assisted analysis of Flow-Launcher/Flow.Launcher@7fc63b07bb (2026-08-13).
Data as JSON: /api/errors/956a869dea9c0598.
Report an issue: GitHub.