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?