32位和64位的Windows资源管理器插件DLL
问题描述:
我目前正在为Windows Explorer
设计DLL
,它提供各种功能,如某些类型文件的信息和缩略图。到目前为止,它在Windows x64上工作正常,而且我现在正在研究32/64 bits
问题和注册过程(此过程由编写在C#
中的小型独立程序完成)。32位和64位的Windows资源管理器插件DLL
我的理解是:
- 64位DLL将无法与32位应用程序中工作,反之亦然
- 因此64位的DLL将不会为a的打开文件对话框工作32位应用程序
- 我需要分别注册了32个和64位版本
我的问题是:
- 我的假设到目前为止是否正确? 特别是我想知道如果应用程序打开的浏览对话框必须具有与应用程序相同的位数(或者是由某个Windows 64进程管理的对话框吗?)
- 假设我有一个32位和一个我的DLL的64位版本,我如何从64位程序注册它们? (“好视窗我是一个64位的过程,但我注册这个32个的应用程序,明白了吗?”)
我已经在读的话题有些:
Windows 64-bit registry v.s. 32-bit registry
http://msdn.microsoft.com/en-us/library/aa384232%28v=VS.85%29.aspx
答
你的理解是正确的。您需要为32位Windows上的用户提供32位版本,以及在WOW64下为32位进程提供常用对话。
如何部署取决于您的安装工具。完成此操作后,我为来自同一源的两个版本创建了单独的MSI,并使用安装它们的引导程序setup.exe。建议的做法是从MSI设置注册表设置。然后你让注册表重定向在WOW64下做到这一点。
感谢您的反馈。启动第二个过程是一个很好的窍门;我仍然想知道如何从同一个程序进行注册。 –
@Julien你可以做到这一点,但你必须打开特定的注册表视图才能看到注册表的正确视图。让注册表重定向(以及DLL的文件重定向)为您完成工作要容易得多。 –
我想它可以手动完成,但正如你所说,依靠重定向可能会更好。特别是,我不能确定钥匙将保持不变。所以我正在寻找一些方法来说“你好,我在注册表中这样做,但这是为{32 | 64}应用程序”。 –