我想开发一个兼容Windows XP SP2(32位)和Windows 7 64位的shell扩展(上下文菜单处理程序)。
是否可以在64位Windows中运行32位shell扩展,或者是否必须将shell扩展移植/重建为64位才能在Windows 7 64位中使用?
在64位操作系统中使用32位shell扩展是否存在任何缺点/已知问题?
32位应用程序在64位Windows中运行得很好,但我不确定shell扩展,因为,如果我的理解是正确的,shell扩展是 in-proc 加载的COM服务器进入资源管理器进程,它应该是64位Windows中的64位进程...或者是为在64位操作系统中运行的32位外壳扩展提供的“32位仿真”形式?
答案 0 :(得分:10)
shell扩展只是一个DLL,规则是32位应用程序只能加载32位DLL,而64位应用程序只能加载64位DLL。没有办法解决这个问题。
32位shell扩展在64位系统上仍然有用,因为它意味着加载shell扩展的任何32位第三方应用程序都可以工作。例如,TortoiseSVN附带并安装了32位和64位版本,在64位Windows上,您仍然可以从32位应用程序(如第三方文件管理器)访问TortoiseSVN上下文菜单。
但是资源管理器本身在64位Windows上是64位本机,因此如果您希望它在资源管理器中工作,则需要64位版本的扩展。
答案 1 :(得分:0)
Shell扩展是COM组件。如果您将其安装为进程外服务器,Windows(DCOM)应该处理所有32< - > 64位编组。
然后,MIDL编译器将创建在进程中加载的64位存根。
答案 2 :(得分:0)
您可以使用32位资源管理器,例如64位Windows中的xplorer²。它们可以处理32位DLL扩展,可用作搜索内容,预览数据以及在上下文菜单中显示的内容。内置资源管理器是64位的,它忽略了32位扩展。