1

我有一个使用桌面命名空间扩展的程序。在 Windows 2000、Windows XP 和 Windows Vista 中,用户可以将图标拖到桌面上的图标上,然后启动程序。但是,在 Windows 7(家庭版和旗舰版)中,所发生的只是重新排列了图标顺序。我尝试使用 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"
4

2 回答 2

3

ShellFolder 在 Windows 7 上需要设置 SFGAO_BROWSABLE 位 (0x08000000)。

于 2009-11-03T18:19:29.923 回答
0

Windows 7 的 UAC 可能会阻止所需的拖放行为。如果拖动的项目的权限小于目标项目的权限,则目标不会启动。也许您可以关闭UAC?

于 2009-11-02T17:13:53.583 回答