像zip这样的命名空间shell扩展

时间:2014-01-20 16:19:24

标签: explorer windows-shell shell-extensions

我想创建一个命名空间shell扩展,它允许用户直接在Windows资源管理器中浏览我的存档内容(如zip文件)。我在创建NSE方面有一些经验,对我来说实现所有nessesary接口并不是问题。我唯一不明白如何在Windows注册表中注册这样的NSE。如何强制资源管理器以编程方式从上下文菜单外壳扩展(在新窗口或同一窗口中)打开我的存档。

更新

我检查了.zip注册表项并尝试以相同的方式注册我的NSE。

我的扩展名为.0003。我创建了以下键:

[HKEY_CLASSES_ROOT\.0003]
@="TCIntegrationPack.64.TWCXNamespace"

[HKEY_CLASSES_ROOT\TCIntegrationPack.64.TWCXNamespace]
@="test only"

[HKEY_CLASSES_ROOT\TCIntegrationPack.64.TWCXNamespace\CLSID]
@="{B1BE3C6B-25E2-47DE-8AB9-878FCA3CD01A}"

[HKEY_CLASSES_ROOT\TCIntegrationPack.64.TWCXNamespace\Shell]

[HKEY_CLASSES_ROOT\TCIntegrationPack.64.TWCXNamespace\Shell\open]
"MultiSelectMode"="Document"

[HKEY_CLASSES_ROOT\TCIntegrationPack.64.TWCXNamespace\Shell\open\Command]
@="%SystemRoot%\\Explorer.exe /idlist,%I,%L"
"DelegateExecute"="{11dbb47c-a525-400b-9e80-a54615a090c0}"

[HKEY_CLASSES_ROOT\CLSID\{B1BE3C6B-25E2-47DE-8AB9-878FCA3CD01A}]
@="TCIntegrationPack.64.TWCXNamespace"

[HKEY_CLASSES_ROOT\CLSID\{B1BE3C6B-25E2-47DE-8AB9-878FCA3CD01A}\InprocServer32]
@="F:\\Delphi\\Projects\\TCIntegrationPack\\Win64\\Debug\\TCIntegrationPack.64.dll"
"ThreadingModel"="Apartment"

[HKEY_CLASSES_ROOT\CLSID\{B1BE3C6B-25E2-47DE-8AB9-878FCA3CD01A}\ShellFolder]
"Attributes"=dword:08000000

为了测试,我运行以下命令:

explorer.exe / root,{B1BE3C6B-25E2-47DE-8AB9-878FCA3CD01A},“f:\ 1.0003”

我在日志中看到以下内容:

  TWCXNamespaceRootFolder is created
    TWCXNamespaceRootFolder.QueryInterface IShellFolder out Result=S_OK
    TWCXNamespaceRootFolder.IShellFolder.BindToObject started
      TWCXNamespaceRootFolder.IShellFolder.BindToObject in AItemIDList=F:\
      TWCXNamespaceRootFolder.IShellFolder.BindToObject in AReserved=0000000000000000
      TWCXNamespaceRootFolder.IShellFolder.BindToObject in AIID=IShellFolder
      TWCXNamespaceRootFolder.IShellFolder.BindToObject out Result=E_NOTIMPL
    TWCXNamespaceRootFolder.IShellFolder.BindToObject finished
  TWCXNamespaceRootFolder is destroyed

Shell请求我文件的父文件夹的IShellFolder接口。这是正常的吗?我的错误在哪里?

更新2

问题解决了。有必要添加其他注册表项

HKCR\CLSID\{extension CLSID}\Implemented Categories\{00021490-0000-0000-C000-000000000046}

此资源管理器正确使用我的扩展程序。可以找到一些扣留here

0 个答案:

没有答案