Sunday 10 October 2010

Internet Explorer 9 userAgent bug fix.

Internet Explorer 9 userAgent bug fix with the WebBrowser control.
I have worked out how to fix the userAgent bug with Internet Explorer 9 beta.
When in IE7 mode with Internet Explorer 9 the full string is returned,
but in IE8 and IE9 modes only return "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)".
(Note: Internet Explorer 8 is ok as the full string in IE7 and IE8 mode is returned)

Until this bug is fixed with IE9, you can return the full userAgent string by;

1;

First check if you are in IE7 mode with:

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
YourAppexe.exe = ???

If YourAppexe.exe =7000 then in IE7 mode, userAgent is ok, so exit code.
If YourAppexe.exe >7000 then ...
You should also check if this is 'IE9 beta' as hopefully the userAgent bug will be fixed in later versions.
2;
Read all the values in:
HKEY_LOCAL_MACHINE (and HKEY_CURRENT_USER)\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Pre Platform (and Post Platform)
3;
Put all the values into one string and store it at
HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent
Platform = ...
* See below.
4;
Your application can now load the WebBrowser control.
5;
So this information will not be added to other applications, as soon as the WebBrowser control has loaded delete the registry 'Platform' value.
*
As you are replacing the Platform string with your new string, you should also add the operating platform name to the string.
Platform = "Windows NT 6.1" + "SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; AskTbARS/5.8.0.12304

P.S.
Netscape and Netscape clones have never returned the full userAgent string.
EG. Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.13) Gecko/20100914 SeaMonkey/2.0.8

No comments:

Post a Comment