注册您的命名空间扩展

【勇芳软件工作室】汉化HomePreviousNext

注册您的扩展并不是特别困难,但必须精确完成,否则用户将永远不会找到您的扩展名。考虑以下注册表项,其中一些是任何命名空间扩展所必需的。

命名空间扩展名(如所有COM对象)必须在CLSID部分中注册。此外,他们还必须是“公寓意识”,将命名值ThreadingModel设置为公寓,如下所示。

HKEY_CLASSES_ROOT\CLSID\{【CLSID】}

HKEY_CLASSES_ROOT_CLSID\{【CLSID】}\InProcServer32\(default)=path\filename.dll

HKEY_CLASSES_ROOT_CLSID\{【CLSID】}\InProcServer32\"ThreadingModel" = "Apartment"

如果您的命名空间扩展将在rooted Explorer下运行,则应添加以下条目,以便Open和Explorer动词出现在命名空间扩展名上。

HKEY_CLASSES_ROOT_CLSID\{【CLSID】}\Shell\Open\Command\(default)

=c:\windows\explorer.exe/root,%1

HKEY_CLASSES_ROOT_CLSID\{【CLSID】}\Shell\Explore\Command\(default)

=c:\windows\explorer.exe/e,/root/%1

您还可以在默认图标的以下键下面包含条目。

HKEY_CLASSES_ROOT_CLSID\{【CLSID】}\DefaultIcon\(default)="path\filename.dll",IconIndex

以下是可选键,但可以非常重要。如果在...{【CLSID】} \\ ShellFolder下包含名为“Attributes”的值,则可以使用IShellFolder::GetAttributesOf方法返回的SFGAO_ *标志来指定连接点的属性。

HKEY_CLASSES_ROOT_CLSID\{【CLSID】}\ShellFolder\Attributes = 0000 00 00

例如,如果设置了SFGAO_FOLDER标志并且其连接点存在于系统命名空间中,则用户会在资源管理器的左窗格中看到您的扩展名的图标,并且可以使用标准(非线性)资源管理器浏览它。如果未设置此标志,则必须提供一个根管理的浏览器

另一个例子是SFGAO_HASSUBFOLDER标志。如果设置好,资源管理器可以通过在左侧显示+图标,将扩展名的图标扩展到更高的级别。

您应该知道的其他注册表项包括将项目放入MyComputer或桌面上所需的注册表项。以下条目列出了这两个位置中的所有项目:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer

\MyComputer\NameSpace

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer

\Desktop\NameSpace

最后,以下条目目前仅适用于Windows NT,但应包含【总是】以备将来兼容。这是shell加载的扩展列表。NT上的shell不会加载此列表上的扩展名。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\ShellExtensions

\Approved\{【CLSID】}="【扩展名称】"