8

我想开发一个与 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 扩展是加载到资源管理器进程中的进程COM 服务器,它应该是 64- 64 位 Windows 中的位进程...还是为在 64 位操作系统中运行的 32 位 shell 扩展提供的“32 位仿真”形式?

4

3 回答 3

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 位版本的扩展。

于 2012-12-07T02:26:39.073 回答
0

Shell 扩展是 COM 组件。如果您将其安装为进程外服务器,Windows (DCOM) 应该负责所有 32 <-> 64 位编组。

然后 MIDL 编译器将创建 64 位存根,该存根正在加载。

于 2012-12-07T02:33:00.157 回答
0

您可以使用 32 位资源管理器,例如64 位 Windows 中的xplorer² 。它们可以处理 32 位 DLL 扩展,这些扩展可用于搜索内容、预览数据以及也显示在上下文菜单中的那些。内置资源管理器是 64 位的,它忽略了 32 位扩展。

于 2016-12-02T08:03:24.100 回答