Наконец-то нашел ответ, благодаря Выбор метода развертывания на MSDN.
Чтобы файл DLL, скомпилированный из примера CppShellExtContextMenuHandler, работал на компьютерах не-dev, вам необходимо сопровождатьэто с библиотеками времени выполнения VC ++, от которых это зависит.
Я использовал замечательный инструмент на компьютере клиента (не dev), чтобы получить имя библиотеки DLL, от которой зависел мой обработчик контекстного меню (инструмент указывает, какие из них отсутствуют на компьютере arget!).
Оказалось, что мне пришлось распространять файлы msvcr100.dll и msvcp100.dll из [Program Files \ Microsoft Visual Studio 10.0 \ VC \ Redist] вместе с файлом CppShellExtContextMenuHandler.dll, чтобы он работал.
Чтобы заставить обработчик работать в Windows XP, мне также пришлось заменить два вхождения
hr = HRESULT_FROM_WIN32 (RegDeleteTree (...
by:
hr = SHDeleteKey (...
... в файле Reg.cpp. Фактически, в соответствии с C ++ Windows Shell contextПример обработчика меню , функция RegDeleteTree недоступна в XP. SHDeleteKey эквивалентен и может быть найден в Shlwapi.h, во всех версиях окон, которые я тестировал.
Спасибо, что уделили времяи пытаюсь решить это!