需要将项目添加到特定文件类型的上下文菜单中。在Windows 7和之前的版本中,通过添加
完成HKEY_CLASSES_ROOT\<extension>\shell\<commandname>\command
键值为
@="<path_to_app> \"%1\""
到注册表。
在Windows 8中不起作用。即使删除了相应类型的PersistentHandler密钥:
有趣的是,如果shell /命令键是在HKEY_CLASSES_ROOT\*\
部分中编写的,则上下文菜单项会出现在所有文件的菜单中,但这是一个巨大的开销,如果我需要将我的应用程序添加到只有2 -3个文件类型,不会破坏任何现有的关联。
我在C#中使用Microsoft.Win32.Registry.ClassesRoot
来实现此逻辑,但问题肯定不在代码中,因为a)它在Windows 7中有效b)使用Windows 8中的管理员主页进行手动编辑不会增加所需的关联。 / p>
答案 0 :(得分:2)
你一定注意到原来没有“shell”键,即使.avi文件肯定有一个Open上下文菜单项。有一个额外的间接级别,请注意.avi键的默认值。这是与.avi文件扩展名相关联的ProgId。
按照WMP11.AssocFile.AVI键查找shell命令,在那里添加命令。
答案 1 :(得分:1)
“HKEY_CLASSES_ROOT \ SystemFileAssociations \ video”是具有非WMP默认媒体播放器的系统中.avi文件的“真实”子树。我感兴趣的.mkv文件类型也创建了另一个子树 - “mkv_auto_file”。不知道为什么会这样做以及它在哪里记录,但我的问题已经解决了。感谢Hans的指导。