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

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

当您右键单击具有特定文件扩展名的文件时,Windows资源pipe理器上下文菜单会显示一个附加条目。

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

我想为此使用C#/。NET 2.0。 如果这是不可能的,我也可以用C ++ / Win32来完成。

我的问题是:

  1. C#.NET 2.0有可能吗?
  2. 什么是集成到Windows资源pipe理器上下文菜单中的必要function?
  3. 我怎样才能使这永久? (我不想在每次启动后重新启动这个工具)
  4. 我需要特别照顾什么? (不同的操作系统,安全权限等)

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

在CodeProject尝试这篇文章 ,这是非常有用的。

编辑:这里有另一篇文章可能有帮助。

所有你需要做的是添加一些东西到registry中。 所以是的,你可以用.NET 2.0来做到这一点。 这里是一个如何添加用记事本编辑的例子 。

如果我记得正确,%1是选定的文件。

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

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

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

因此,如果你沿着Shell扩展路线走,你应该使用本地的C ++ / COM / Win32。