39

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

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

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

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

我的问题是:

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

2 回答 2

26

您将需要访问注册表并在root\\File\\shell或下添加一个键root\Folder\\shell,具体取决于您希望菜单项在哪些项目上可见。

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

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

于 2009-12-03T09:57:54.787 回答
3

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

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

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

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

于 2009-12-03T10:05:35.007 回答