У меня есть программа, которая использует расширение пространства имен рабочего стола. В Windows 2000, Windows XP и Windows Vista пользователи могут перетаскивать значки на значки на рабочем столе, и программа запускается. Однако в Windows 7 (как Home, так и Ultimate) происходит только изменение порядка значков. Я попытался использовать Sysinternals dbgview.exe. Он правильно заметил много событий из handler.exe, но никакие события не запускаются при перетаскивании значка на значок пространства имен, что означает, что drophandler вообще не вызывается.
Поскольку он по-прежнему работает правильно, для Windows 7 должно быть что-то, чего не требовали предыдущие версии ОС.
Расширение пространства имен устанавливается путем помещения соответствующих ключей в реестр, и я бы хотел, чтобы установщик работал таким образом:
HKCR\CLSID\{{MY-NAMESPACE-GUID}:():"Caption"
HKCR\CLSID\{{MY-NAMESPACE-GUID}:(Drop):"""c:\programpath\program.exe"" /argument ""%s"""
HKCR\CLSID\{{MY-NAMESPACE-GUID}\InProcServer32:():"""c:\programpath\handler.exe"""
HKCR\CLSID\{{MY-NAMESPACE-GUID}\InProcServer32:ThreadingModel:"Apartment"
HKCR\CLSID\{{MY-NAMESPACE-GUID}\DefaultIcon:():"""c:\programpath\program.exe"",4"
HKCR\CLSID\{{MY-NAMESPACE-GUID}\Shell\Open\Command:():"""c:\programpath\program.exe"""
HKCR\CLSID\{{MY-NAMESPACE-GUID}\shellex\DropHandler:():{MY-GUID-HANDLER}
HKCR\CLSID\{{MY-NAMESPACE-GUID}\shellex\PropertySheetHandlers(): {MY-GUID-HANDLER}
HKCR\CLSID\{{MY-NAMESPACE-GUID}\ShellFolder():00 01 00 00
HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\Namespace\{{MY-NAMESPACE-GUID}:():"Caption"