21

Search Indexing is interfering with our build process, and I would like to exclude all instances of our dev directories from the indexer (we have a trunk and branches setup).
I could exclude the whole parent directory, but that would exclude too many files.

I can do it manually by deselecting each instance in the indexing options, but this is very manual and tedious.

I've found the rules in the registry at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search\CrawlScopeManager\Windows\SystemIndex\WorkingSetRules, but I don't know if it's kosher to update that on the fly.

Is it possible to exclude directories from Windows Search by wildcard or some other less-manual criteria?

mskfisher
  • 1,063

1 Answers1

24

I looked in the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search\CrawlScopeManager\Windows\SystemIndex\DefaultRules key and found something interesting.

DefaultRules\1 contains:

Default   REG_DWORD    0x00000001
Include   REG_DWORD    0x00000000
Policy    REG_DWORD    0x00000000
Suppress  REG_DWORD    0x00000000
URL       REG_SZ       file:///C:\Users\*\AppData\Local\Temp\*

Look at that URL key - two wildcards!

So since Windows Search natively supports wildcards, all we have to do is tweak an existing exception.

Adding wildcard exceptions to Windows Search

  1. Add template exception.
    Add an exception for a suitable directory by going to Indexing OptionsModify and deselecting one directory (in my case, C:\Users\MyName\dev\trunk\bin).
  2. Stop the Windows Search service.
    Go to Services, select Windows Search, right-click on it, and select Stop.
  3. Find the existing exception.
    Open Registry Editor and navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search\CrawlScopeManager\Windows\SystemIndex\WorkingSetRules.
    Look through each numbered subkey to find yours.
  4. Tweak the exception.
    In my case, I have multiple branches checked out, so I will have directories for trunk and for each versioned branch (such as 3.2, 4.0, etc). So I changed the URL key from

    file:///C:\Users\MyName\dev\ProjectName\trunk\bin
    

    to

    file:///C:\Users\MyName\dev\ProjectName\*\bin
    
  5. Restart the Windows Search service.
    Right-click on Windows Search and select Start or Restart.

That's it! The directories are even unchecked/excluded in the Indexing Options.

mskfisher
  • 1,063
  • 1
    Note that you will need to delete and rebuild your index (or delete and recreate the previously-indexed files) to prevent Windows Search from continuing to monitor those locations. – mskfisher Apr 08 '11 at 15:59
  • 1
    My exceptions showed up in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search\CrawlScopeManager\Windows\SystemIndex\WorkingSetRules\ – CAD bloke Jan 15 '15 at 09:58
  • 6
    Has anyone been able to confirm whether or not the wildcard spans multiple directories? Say I wanted to prevent indexing all folders named 'node_modules' no matter where they are in the file hierarchy? – M-Pixel Dec 05 '15 at 05:49
  • 1
    @Qwertman You should be able to verify that by looking at it in the Indexing Options UI. – mskfisher Dec 05 '15 at 17:44
  • 2
    Windows 10 gives Error Editing Value Cannot edit URL: Error writing the value's new contents. Edit: Ahhh just needed to change permissions on the key – laggingreflex Sep 18 '16 at 03:12
  • 1
    What would be the value if I wanted to exclude bin from everywhere? I tried file:///C:\*\bin but it didn't work; it didn't even ignore the original bin. The * wildcard it seems only works for a single directory level, so x/y/*/bin can't be re-written as */bin. Any workaround? – laggingreflex Sep 18 '16 at 03:27
  • 1
    @laggingreflex One of my SystemIndex\DefaultRules contains URL=file:///*\DfsrPrivate\. Maybe that Syntax works as an exclude for anywhere? – T S Feb 08 '21 at 18:34
  • 1
    @laggingreflex According to https://docs.microsoft.com/en-us/windows/win32/search/-search-3x-wds-extidx-csm-searchroots#about-search-roots it sounds like my example will probably not work and only find directories in the root of drives, but I'm not really sure... – T S Feb 08 '21 at 18:47