Google Chrome Isn’t Launched With Some Apps
Please note, although I work for a large corporation, these views are entirely my own and do not reflect the views of my employer. Some of this information may be incorrect, but I have tried to be as thorough as possible with my investigation. If you find any errors that need correcting, please leave a comment!
While investigating why Adobe Air doesn’t launch my default browser, I noticed that Google Chrome isn’t as aggressive as IE is when it sets the default browser settings.
Make Google Chrome My Default Browser
What happens when you say “Make Google Chrome my default browser”? Well, from the looks of it, all it does is registers itself as the default program for only the Windows Explorer shell. In theory, every application that needs launched should go through Windows Explorer (via shellexecute), which will check for the user set defaults and launch the appropriate program. What Google Chrome does not do though, is set itself up as the default handler in the HKLM\Software\Classes\htmlfile registry key. This makes it so applications that only check this key completely bypasses Google Chrome as the default browser.
Make Internet Explorer My Default Browser
When you set IE as your default browser, not only does it set itself up as the default browser for the Windows Explorer, but it also makes sure that it is the default handler for HKLM\Software\Classes\htmlfile. Therefore, for the applications that only look at this key they will see that IE is the default browser and launch it.
Why Do Some Apps Behave Differently
There has been a standard way to launch the default browser in Windows for a long time, and that has always been by passing the URL into ShellExecute. For .Net applications there is Process.Start which will do the same thing, and just introduced in Java is Desktop.Action.browse. All of these will go through Windows Explorer, find the default program, and launch it.
Why Adobe Air Not Honor The Default Browser
From looking at where Adobe Air looks to launch a browser, it appears that it uses none of the methods above. When navigateToUrl looks for the default browser, it just checks the HKCU\Software\Classes\htmlfile* registry key, and loads the default handle that is in this key. Since Google Chrome does not set this and IE does, IE is launched.
Why Does Firefox Launch if IE is My Default Browser
Firefox goes even one step further! If you see above, I mentioned that IE sets HKLM, but not HKCU! So when Firefox sets HKCU, and Adobe Air looks there, it says Firefox is the default browser, then launches it. To set IE as the default browser, you can either set it from the defaults**, or delete the registry key.
* As someone may note, it actually looks for HKCU\Software\Classes\.htm, which by default is htmlfile. What Firefox does is changes this to FirefoxHTML.
**When you set the default programs for web browsers, what it does is sets the HK*\Software\Classes\[extensions] keys to point to htmlfile. The reason why if you use set Google Chrome or Firefox as the default browser there and it is not honored is because neither Google Chrome nor Firefox set the htmlfile class. For Firefox, just go through it’s menu system to make it the default browser and this will be fixed.