Howto03 Sep 2008 10:06 pm

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.

One Response to “Google Chrome Isn’t Launched With Some Apps”


  1. [...] UPDATE: Logan Buesching commented to say that Chroma apparently creates “ChromeHTML” shellopen keys except they’re in HKCR (which is why you get a UAC prompt, it’s the machine part of the registry), so you can actually just set HKCUSoftwareClasses.htm to ChromeHTML and you’re done. Logan also goes into more detail as to what’s going on so check out his post. [...]

Trackback this Post | Feed on comments to this Post

Leave a Reply

Buy fake rolex watch for sale replica watches replica rolex womens. Quality furniture furniture baby furniture.