1

デスクトップの名前空間拡張機能を利用するプログラムがあります。Windows 2000、Windows XP、およびWindows Vistaでは、ユーザーはアイコンをデスクトップ上のアイコンにドラッグして、プログラムを起動できます。ただし、Windows 7(HomeとUltimateの両方)では、アイコンの順序が再配置されるだけです。Sysinternalsdbgview.exeを使用してみました。handler.exeからの多くのイベントを正しく認識しましたが、アイコンを名前空間アイコンにドラッグしてもイベントはトリガーされません。つまり、drophandlerはまったく呼び出されていません。

それでも正しく動作するので、Windows7が以前のバージョンのOSでは要求しなかったものが必要です。

名前空間拡張機能は、関連するキーをレジストリに詰め込むことによってインストールされます。インストーラーをそのように機能させ続けたいと思います。

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 に答える