【问题标题】:Add a context menu item in windows explorer only for a specifc drive在 Windows 资源管理器中仅为特定驱动器添加上下文菜单项
【发布时间】:2011-08-12 09:07:18
【问题描述】:

我想在 Windows 资源管理器中添加一个上下文菜单项,有点像 notepadd++、winzip、winrar。

这是我的要求:

  • 上下文菜单项应显示在特定驱动器的所有文件上(例如:应显示在 D: 上而不是 C: 上)
  • 上下文菜单应该只启动一个带有所选文件作为参数的 .NET 程序
  • 应该可以在 XP、Vista、Windows 7(32 位和 64 位)上运行

经过一番搜索,看起来我可以使用 HKEY_CLASSES_ROOT\Folder\shell 注册表项并将自己插入此处,但看起来好像全有或全无,无法将我的项目仅放在上下文菜单中文件在 D: 但不是 C:

另一种解决方案是编写一个 Shell 扩展,但在 .NET 中不鼓励这样做,而且对于手头的任务看起来有点矫枉过正。

解决我的问题的最简单方法是什么?

谢谢

【问题讨论】:

  • 从 .net 4.0 开始,至少支持编写 shell 扩展。但是,对于非托管 shell 扩展,可能有更好的示例,因此编写非托管扩展实际上可能更容易。

标签: .net windows-shell


【解决方案1】:

另一种解决方案是编写一个 Shell 扩展,但这是 在 .NET 中不鼓励使用,并且对于手头的任务看起来有点矫枉过正。

你在哪里读到它是气馁的? Dino Esposito 用 C# 写了一本关于 Shell Extensions 的整本书,谷歌为它:)

在 ShellExtension 中执行您的代码,并且您可以完全控制要显示的内容和时间,在这种情况下,您需要的并不是矫枉过正。

注册表包含 ShellExtension 注册(以及其他内容),因此我认为您应该采用编码的 shell 扩展方法,而不是手动接触注册表,因为在第二种情况下,您对所发生的事情的控制较少。

【讨论】:

  • 感谢 Davide,这是我不鼓励阅读的地方:blogs.msdn.com/b/oldnewthing/archive/2006/12/18/1317290.aspx 看起来现在 .NET 4.0 支持此功能,但现在可以将 .NET 4.0 视为主流吗?
  • 我的谷歌技能无法找到您正在谈论的书。 Dino Esposito 写了一本关于 C++ 中的 Windows Shell 编程的书,但是 c# 呢?你有链接吗?亚马逊上也没有...
  • 对不起,我可能把这本书弄混了,它是用 C++ 编写的。检查一下:codeproject.com/KB/shell/csdoesshell1.aspx 我知道我读过关于 C# 中的 Shell 扩展的文章。
  • 我终于走上了 .NET 路线……由于种种原因,我无法使用 C++。在极少数情况下,扩展程序不会加载,但这是我们可以付出的代价。
猜你喜欢
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 2020-03-18
  • 1970-01-01
  • 2015-07-11
  • 2011-12-24
相关资源
最近更新 更多