0

I am currently working on a DLL for Windows Explorer, which provides various features like information and thumbnails for certain types of files. So far it works fine on Windows x64, and I am now working on the 32/64 bits issue and on the registration process (this process is made by a small standalone program written in C#).

My understanding is:

  • a 64 bits DLL will not work with a 32 bits application and vice versa
  • thus the 64 bits DLL will not work for the Open file dialog box of a 32 bits application
  • I need to register separately the 32 and 64 bits versions

My questions are:

  • are my assumptions correct so far? In particular I am wondering if the browse dialog box opened by an application necessarily has the same bitness as the application (or is the dialog box managed by some Windows 64 process anyway?)
  • supposing I have a 32 bits and a 64 bits versions of my DLL, how do I register them from a 64 bits program? ("Ok Windows I'm a 64 bits process, but I'm registering this for 32 bits applications, got it?")

Some pages I have read on the topic:

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

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

Community
  • 1
  • 1
Julien Guertault
  • 1,324
  • 1
  • 15
  • 25

1 Answers1

3

Your understanding is correct. You need to supply a 32 bit version for users on 32 bit Windows as well as for common dialogs for 32 bit processes under WOW64.

How to deploy depends on your installation tool. When I have done this I created separate MSIs for the two versions, from the same source, and used a bootstrapper setup.exe that installed them both. Recommended practice is to set the registry settings from the MSI. Then you let registry redirection do it's magic under WOW64.

David Heffernan
  • 601,492
  • 42
  • 1,072
  • 1,490
  • Thank you for the feedback. Launching a second process is a nice trick; I still wonder how to do the registration from the same program though. – Julien Guertault Sep 29 '11 at 14:54
  • @Julien You can do this but you have to open specific registry views to get to the right view of the registry. It's much easier to let registry redirection (and file redirection for the DLL) do the work for you. – David Heffernan Sep 29 '11 at 15:00
  • I guess it can be done manually but as you say, it's probably better to rely on the redirection. In particular, I cannot be sure keys will remain the same. So I am looking for some way to say "Hello, I am doing this in the registry, but this is for a {32|64} application". – Julien Guertault Sep 30 '11 at 01:42