编写类似程序集缓存查看器的Windows Shell扩展

3
我想编写一个Shell扩展程序,完全定制特定文件夹的显示方式,就像程序集缓存查看器一样(浏览到c:\ windows \ assembly,您将知道我的意思)。 哪些COM接口负责提供这些钩子? 我的“查看器”将用C#编写...
谢谢!

胜者是: http://www.ssware.com/eznamespaceextensions/eznamespaceextensions.htm - Adam
2个回答

7
请注意,在.NET中进行资源管理器扩展存在争议
示例问题:如果您的目标是.NET 2.0,则您的扩展将无法在任何由.NET 1.1应用程序显示的“打开文件”对话框中工作。一个进程只能加载一个版本的.NET运行时。
这不仅仅是您的扩展无法工作的问题;您将向任何使用文件对话框的应用程序注入特定版本的.NET运行时。如果该应用程序是计划加载针对较新版本的.NET运行时的COM组件的非托管应用程序等,则这是个坏消息。 编辑:如评论所述,这现在已由.NET 4.0运行时解决。因此,托管的资源管理器扩展应始终针对.NET 4.0或更高版本。

3
最新的 .Net 4.0 运行时支持在进程内与早期的 .Net 运行时(以及所有未来的运行时)进行并列加载。请参阅来自 http://msdn.microsoft.com/en-us/magazine/ee819091.aspx 的以下摘录: “由于能够使多个运行时与任何其他运行时在进程中并排运行,我们现在可以提供对编写托管 shell 扩展的一般支持——即使这些扩展与机器上的任意应用程序在进程中运行。” - logicnp

3
这是一篇有助于您了解的文章: 通过使用命名空间扩展,可以扩展Windows shell以为其创建一些自定义功能。其中一个常见用途是启用Explorer呈现不在一个真实文件夹中但实际上驻留在多个位置的项列表。文件夹的视图使得这些项看起来在一个位置,所以管理它们变得更加容易。本文说明了使用C#和.NET Framework创建自定义shell命名空间扩展的过程。[...]

我已经尝试了这段代码...并通过调用使用它:ShellFolder.RegisterFunction(typeof(Class1));但它似乎没有任何作用...它在Vista上不起作用吗? - Adam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接