Расширение пространства имен рабочего стола в Windows 7: невозможно перетащить - PullRequest
1 голос
/ 30 октября 2009

У меня есть программа, которая использует расширение пространства имен рабочего стола. В Windows 2000, Windows XP и Windows Vista пользователи могут перетаскивать значки на значок на рабочем столе, и программа запускается. Однако в Windows 7 (как Home, так и Ultimate) все, что происходит, - это изменение порядка значков. Я пытался использовать Sysinternals dbgview.exe. Он правильно заметил многие события из handler.exe, но никакие события не запускаются при перетаскивании значка на значок пространства имен, что означает, что обработчик не вызывается вообще.

Поскольку он по-прежнему работает должным образом, в 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"

Ответы [ 2 ]

3 голосов
/ 03 ноября 2009

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

0 голосов
/ 02 ноября 2009

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

...