Расширение пространства имен рабочего стола в Windows 7: невозможно перетащить

У меня есть программа, которая использует расширение пространства имен рабочего стола. В 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"

person Brian    schedule 30.10.2009    source источник


Ответы (2)


В ShellFolder должен быть установлен бит SFGAO_BROWSABLE (0x08000000) в Windows 7.

person Brian    schedule 03.11.2009

UAC Windows 7 может препятствовать желаемому поведению перетаскивания. Если у перетаскиваемого элемента меньше разрешений, чем у целевого элемента, цель не запустится. Возможно, вы можете отключить UAC?

person raven    schedule 02.11.2009
comment
Это не ярлык, это расширение пространства имен. Тем не менее, это не проблема UAC, и отключение UAC не влияет. - person Brian; 02.11.2009