An odd bug: IE 7 (or 8) browser string includes IE 6

I ran into an issue with users who couldn't connect to a government website; the site reported "You must use Internet Explorer 5.5 or greater". This was odd, as the entire group affected was using IE7. (UPDATE: This problem continues with IE8 as well.)

At first I thought it was just a bad browser detection, but when I visited the site, there was no error message. A bit of searching on the Internet turned up the fact that machines that upgraded from IE 6 can retain part of the connection string in a registry key:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\User Agent\Post Platform

Deleting this key causes the browser identity string to stop transmitting the false IE 6 additional component, which in turn stopped confusing the website in question. The reason it had not turned up as a problem before is that most detection algorithms take the *first* reported version and ignore the remainder of the string.

UPDATE: This fix appears to be temporary as the registry entry reappears after a restart unless the instructions found at the Vista Heads post "IE 8.0 user agent string" are followed.

The technique used in that link is to clear all of the permissions on the Post Platform key and to set SYSTEM to have only read only access. I am testing this and will update this note with the results.

UPDATE2: There is a great workaround available here for IE8: UA Pick for IE8.

It allows the user to set the user agent on a tab by tab basis. Very useful for poorly constructed browser detection algorithms.