At the end of November, Microsoft updated Windows Desktop Search from 2.6.5 to 2.6.6. Now, eagle eyed readers might remember that there was a bug in 2.6.5 - after registering your protocol handler, WDS doesn't automatically start indexing. According to the post in the MSDN forums, this was going to get fixed in 2.6.6.
Add to that the fact that I had a sneaky feeling registration wasn't working right (and because I had to do a lot of VPC messing about anyway) I thought I'd have a closer look.
The MSDN docs for registration don't mention the search manager object, and list a load of registry keys to do it all manually. Registry Monitor to the rescue, and it looks like neither 2.6.5 nor 2.6.6 write the protocol handler details to HKLM when using the search manager. This means you'll need to install your protocol handler for each user on the system.
Of course, that's not very useful seeing as WDS doesn't look at the HKLM key document. It does look at HKLM\Software\Microsoft\Search\ProtocolHandlers (note Search instead of RSSearch) but the format is different. I think this is a Sharepoint registry key, so I'd be reluctant to use if WDS (mainly because we not writing a plugin for Sharepoint, but for WDS). Interestingly, once it is written under HKCU, WDS will also search for it explicitly in that Sharepoint key above.
And to make things a bit more confusing, the HasRequirements and HasStartPage values documented on that MSDN page don't appear to be read, either.
So, let's look at that other bug. On a clean 2.6.5 system, if I register the protocol handler, it gets queried for ISearchProtocol, and Init is called, and that's it. It's only after I restart WDS or choose to rebuild the index does ISearchProtocol::GetDefaultCrawlScope get called, and I can set the default root URL. Some time after that, ISearchProtocol is queried, as is IUrlAccessor, and everything looks good.
Under 2.6.6, there's not much difference. The useless call to ISearchProtocol before having set up the default URL doesn't happen. Other than that, it's all exactly the same - I only get to set the default URL after restarting the program or rebuilding the index.
So, I'm sure that we can really say that the bug is fixed.
And seeing that the registry doesn't seem to work as expected, I'll be glad to move up to version 3.