C# 上下文菜单外壳扩展在Windows 7 64位下不工作

C# 上下文菜单外壳扩展在Windows 7 64位下不工作,c#,.net,windows-7,64-bit,windows-shell,C#,.net,Windows 7,64 Bit,Windows Shell,我使用C中的Shell扩展创建了非常简单的上下文菜单。它在WindowsXP32位下运行良好,但在Windows7下64位菜单项不显示 我尝试将安装输出构建到x64,但没有效果 简单源包含ContextMenu,安装项目为 看起来Wow6432应该由安装项目处理,注册和添加到全局程序集缓存时也是如此 如果您能就此问题提供帮助/建议,我将不胜感激。请在Visual Studio中检查DLL的平台,并确保它是64位的。64位进程无法将32位DLL加载到其进程空间,反之亦然 要构建64位版本的DLL,

我使用C中的Shell扩展创建了非常简单的上下文菜单。它在WindowsXP32位下运行良好,但在Windows7下64位菜单项不显示

我尝试将安装输出构建到x64,但没有效果

简单源包含ContextMenu,安装项目为

看起来Wow6432应该由安装项目处理,注册和添加到全局程序集缓存时也是如此


如果您能就此问题提供帮助/建议,我将不胜感激。

请在Visual Studio中检查DLL的平台,并确保它是64位的。64位进程无法将32位DLL加载到其进程空间,反之亦然


要构建64位版本的DLL,请使用Visual Studio的配置管理器创建新的解决方案平台。选择X64而不是X86或任何平台,然后重新生成项目。如果您使用的是脚本化的构建,那么C编译器也有一些限制。

我强烈建议您不要使用任何由Esposito编写的代码。和往常一样,ShellExt文件夹中的P/Invoke声明完全错误,它们不能在64位代码中工作。首先,发布这段代码是非常不负责任的,shell扩展不应该使用4.0之前的.NET CLR版本。如果你想拯救pinvoke.net,请访问它。

我也会遇到同样的问题。您需要更改安装文件中的InstallUtil.dll。我在博客上写了一篇关于它的文章。

我也尝试过这个方法,但后来发现BadImageFormatException未经处理,为此建议的解决方案是更改x86的内部版本。您的引用是什么?您是否在项目中引用了任何32位DLL?这将限制您的64位Windows资源管理器兼容性。我使用SelelExpple,所以他使用的是SHIL32.DLL,它是32位DLL。我用C++写了这个,没有问题,谢谢有用的建议: