扩展Windows资源pipe理器上下文菜单

我很难找出为什么这不起作用在我的电脑上。 我读过这篇文章http://msdn.microsoft.com/en-us/library/bb776820.aspx,并试过它,它适用于一个未知的文件types,但知道如.bmp它不 -我也删除了.bmp下的其他键 – 没有帮助。 我已经在HKEY_CLASSES_ROOT.bmp和HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts.bmp中试过这个,我需要在我的程序中实现这个,所以它有一些文件types如bmp的自定义上下文菜单项。 顺便说一句。 我已经尝试了ContextEdit(一个免费程序) – 也没有工作 – 任何想法? 也许不爽快(我试图重新启动 – 没有做任何改变)?

编辑:一个更新 – 如果我去设置默认程序和Windows照片查看器出于某种原因,我不能禁用它的一些文件types,如.jpg,.bmp,.gif。 真奇怪…

编辑号码 2:现在开始工作,我已经确定了问题 – 即使重新启动计算机后,文件关联也没有刷新。 在将一个txt文件关联到不同的编辑器后,我的.bmp菜单,图标和默认程序已经改变。 所以现在的主要问题是 – 如何手动刷新使用C#的文件关联?

Solutions Collecting From Web of "扩展Windows资源pipe理器上下文菜单"

我想我已经找到了这个解决方案,它是这样的 – 定义:

[DllImport("shell32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern void SHChangeNotify(uint wEventId, uint uFlags, IntPtr dwItem1, IntPtr dwItem2); const uint SHCNF_IDLIST = 0x0; const uint SHCNE_ASSOCCHANGED = 0x08000000; 

然后在需要的时候用你的代码来完成你的代码,然后执行它:

  SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero); 

此外,如果提到的注册表项不起作用尝试:

  HKEY_CLASSES_ROOT\SystemFileAssociations\extension\Shell\yourcommand