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

cla*_*amp 37 .net c# explorer file-extension

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

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

单击此条目时,将使用此文件作为其参数之一启动某个EXE.

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

我的问题是:

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

Mar*_*ell 26

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

在CodeProject上试试这篇文章,它非常有用.

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


DrP*_*zza 5

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

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

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

因此,如果您选择Shell 扩展路线,您应该使用本机 C++/COM/Win32。