我在C#中使用Shell扩展创建了非常简单的上下文菜单。它在Windows XP 32位下正常工作,但在Windows 7 64位菜单项下没有出现。
我尝试将安装程序输出构建到x64但没有效果。
Simple Source包含ContextMenu,安装项目为here。
看起来Wow6432应该由安装项目处理,注册和添加到全局程序集缓存
相同我很感激有关此问题的帮助/建议。
答案 0 :(得分:3)
我强烈建议您远离Esposito编写的任何代码。像往常一样,他在ShellExt文件夹中的P / Invoke声明是完全错误的,它们无法在64位代码中工作。发布此代码首先是非常不负责任的,shell扩展应该永远不会使用4.0之前的.NET CLR版本。如果你想拯救它,请访问pinvoke.net。
答案 1 :(得分:1)
在Visual Studio中检查DLL的平台并确保它是64位的。 64位进程无法将32位DLL加载到其进程空间中(反之亦然)。
要构建64位版本的DLL,请使用Visual Studio的Configuration Manager创建新的解决方案平台。选择X64(而不是X86或任何平台),然后重建项目。如果您使用的是脚本化版本,那么C#编译器也有command-line switches。
答案 2 :(得分:0)
我也有同样的问题。您需要在安装文件中更改InstallUtil.dll。我在博客上写了一篇关于它的文章。 http://artyomgrigor.wordpress.com/2010/10/06/register-shell-extension-context-menu-also-on-windows-x64-part-2/