【问题标题】:Windows Explorer plugin DLL in 32 and 64 bits32 位和 64 位的 Windows 资源管理器插件 DLL
【发布时间】:2011-11-27 14:20:46
【问题描述】:

我目前正在为Windows Explorer 开发一个DLL,它为某些类型的文件提供各种功能,例如信息和缩略图。到目前为止,它在 Windows x64 上运行良好,我现在正在处理 32/64 bits 问题和注册过程(这个过程是由一个用 C# 编写的小型独立程序完成的)。

我的理解是:

  • 64 位 DLL 不适用于 32 位应用程序,反之亦然
  • 因此 64 位 DLL 不适用于 32 位应用程序的打开文件对话框
  • 我需要分别注册 32 位和 64 位版本

我的问题是:

  • 到目前为止我的假设是否正确? 我特别想知道应用程序打开的浏览对话框是否必须与应用程序具有相同的位数(或者该对话框是否由某些 Windows 64 进程管理?)
  • 假设我的 DLL 有 32 位和 64 位版本,如何从 64 位程序中注册它们? (“好的 Windows,我是一个 64 位进程,但我正在为 32 位应用程序注册它,明白吗?”

我读过的一些关于该主题的页面:

Windows 64-bit registry v.s. 32-bit registry

http://msdn.microsoft.com/en-us/library/aa384232%28v=VS.85%29.aspx

【问题讨论】:

    标签: c# .net windows 32bit-64bit dllregistration


    【解决方案1】:

    你的理解是正确的。您需要为 32 位 Windows 上的用户以及 WOW64 下 32 位进程的常用对话框提供 32 位版本。

    如何部署取决于您的安装工具。完成此操作后,我从同一来源为两个版本创建了单独的 MSI,并使用了安装它们的引导程序 setup.exe。推荐的做法是从 MSI 设置注册表设置。然后让注册表重定向在 WOW64 下发挥神奇作用。

    【讨论】:

    • 感谢您的反馈。启动第二个进程是一个不错的技巧;不过,我仍然想知道如何从同一个程序进行注册。
    • @Julien 您可以这样做,但您必须打开特定的注册表视图才能获得注册表的正确视图。让注册表重定向(以及 DLL 的文件重定向)为您完成工作要容易得多。
    • 我想它可以手动完成,但正如你所说,依赖重定向可能更好。特别是,我不能确定密钥会保持不变。所以我正在寻找某种方式来表达“您好,我正在注册表中执行此操作,但这是针对 {32|64} 应用程序”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 2020-08-30
    • 2014-11-06
    • 2012-05-12
    • 2011-01-05
    • 1970-01-01
    相关资源
    最近更新 更多