See the question and my original answer on StackOverflow

The extension is now probaby not hosted in explorer.exe, but in dllhost.exe (a Windows feature that isolates possibly buggy extensions from a critical Windows process).

You can configure it to be hosted inprocess with explorer.exe to ease debugging, as documented here: C++ Windows Shell thumbnail handler (CppShellExtThumbnailHandler)

Debugging thumbnail handlers is difficult for several reasons.

1) The Windows Explorer hosts thumbnail providers in an isolated process to get robustness and improve security. Because of this it is difficult to debug your handler as you cannot set breakpoints on your code in the explorer.exe process as it is not loaded there. The isolated process is DllHost.exe and this is used for other purposes so finding the right instance of this process is difficult.

2) Once a thumbnail is computed for a particular file it is cached and your handler won't be called again for that item unless you invalidate the cache by updating the modification date of the file. Note that this cache works even if the files are renamed or moved.

Given all of these issues the easiest way to debug your code in a test application then once you have proven it works there test it in the context of the explorer.

Another thing to do is to disable the process isolation feature of explorer. You can do this by putting the following named value on the CLSID of your handler

HKCR\CLSID{CLSID of Your Handler}

   DisableProcessIsolation=REG_DWORD:1

Be sure to not ship your handler with this on as customers require the security and robustness benefits of the isolated process feature.