views:

11

answers:

1

In order to find out what the default email client is, I found the same information over and over again: Look at the default string in HKLM\Software\Clients\Mail. (see for example this related question)

However, this seems not to be true for all OSs and/or situations: I have two machines running Win7 64bit, let's call them A and B. A has Outlook 2010 64bit and Thunderbird 3 32bit installed. B has Outlook 2007 32bit and Thunderbird 3 32bit installed. Both A and B have Thunderbird set as their default mail client.

However, the state of the registry is not as I expected it:

On machine A, both HKLM\Software\Clients\Mail and HKLM\Software\Wow6432Node\Clients\Mail have an empty string as the default string value. On B, both those keys contain Microsoft Outlook as the default string value, which is clearly wrong. Further investigation revealed that the correct value seems to be written to HKCU\Software\Clients\Mail on both machines.

I want my application to handle this correctly for all cases. It makes kinda sense, that Win7 now seems to hold a separate default mail client for each user, but it appears rather inconsistent. When looking at the plethora of information that points to HKLM\Software\Clients\Mail, it seems obvious that previous versions of Windows handled this differently and always wrote to that location. So when did this change? Has the wrong value on machine B any meaning? If not, why does it get written there in the first place? Does the mix of 64bit and 32bit email clients on the same computer change anything?

I would most appreciate if anyone would share reliable information or documentation that explains this topic! Maybe there is a Win32 API function that returns the correct value?

+1  A: 

Does this MSDN article help you?

How to Register an Internet Browser or E-mail Client With the Windows Start Menu

Registrations made in the HKEY_CURRENT_USER subtree have higher precedence for the console user than corresponding registrations made in the HKEY_LOCAL_MACHINE. For new users on the system, the settings stored in HKEY_LOCAL_MACHINE are used.

For Windows XP a special article: How to modify the default Web browser and e-mail client programmatically in Windows XP and How to implement a per-user default mail client in Windows XP?

Sorry, can't help you with the Win32 API.

moontear
Thanks! Your first link looks exactly like what I was looking for and it applies to Win XP, Vista and 7.
Hatch