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