我想写一个小工具,它执行以下操作:
右键单击具有特定文件扩展名的文件时,Windows资源管理器上下文菜单会显示其他条目。
当您单击此条目时,将启动某个EXE,并将此文件作为其参数之一。
我想使用C#/。NET 2.0。如果不可能,我也可以使用C ++ / Win32。
我的问题是:
答案 0 :(得分:25)
您需要访问注册表并在root\\File\\shell
或root\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。