集成到Windows资源管理器上下文菜单中

时间:2009-12-03 09:50:43

标签: c# .net explorer file-extension

我想写一个小工具,它执行以下操作:

右键单击具有特定文件扩展名的文件时,Windows资源管理器上下文菜单会显示其他条目。

当您单击此条目时,将启动某个EXE,并将此文件作为其参数之一。

我想使用C#/。NET 2.0。如果不可能,我也可以使用C ++ / Win32。

我的问题是:

  1. 是否可以使用C#.NET 2.0?
  2. 集成到Windows资源管理器上下文菜单中的必要功能是什么?
  3. 我怎样才能永久化? (我不想在每次启动后重新启动此工具)
  4. 我需要特别注意什么? (不同的操作系统,安全权限等)

2 个答案:

答案 0 :(得分:25)

您需要访问注册表并在root\\File\\shellroot\Folder\\shell下添加密钥,具体取决于您希望菜单项可见的项目。

尝试this article at CodeProject,这非常有用。

编辑:another article here可能有所帮助。

答案 1 :(得分:3)

顺便说一下,由于当前无法在同一进程中托管多个运行时版本,因此不支持将.NET用于shell扩展(.NET 4将解除此限制)。

考虑你有两个shell扩展的情况;一个用于.NET 3.5,一个用于.NET 1.哪个运行时将加载到您的进程中?好吧,它或多或少是随机的 - 它取决于首先加载哪个shell扩展。有时它可能是2.0运行时,有时它可能是1.1运行时。

如果.NET程序创建公共文件对话框,这也是一个问题。您的shell扩展可能会加载也可能不会加载,并且可能会或可能不会运行正确的运行时版本。

因此,如果你往下走Shell extension route,你应该使用原生的C ++ / COM / Win32。