Windows XP Pro SP-3
Internet Explorer 8.00.6001.18702
Problem: "about
:Tabs" page has lost all of its functionality.
History: New problem (in last week). This page did display okay before.
Have not been watchful to notice when this page became
incomplete.
I set IE8 to use "about
:Tabs" as its home page. I wanted it to display
the recovery options that are present in that page so, for example, I
could elect to reload the last set of tabs when IE8 first loads. The
"about
:Tabs" page will no longer display its useful content. Only a
portion of the web page gets painted but none of the recovery features,
like opening the last set of tabs. An error occurs when loading the
page saying:
Webpage error details
Message: Element not found.
Line: 144
Char: 1
Code: 0
URI: res://ieframe.dll/tabswelcome.htm
Line 144 has:
<body id="newTabPage" onload="window.external.BuildNewTabPage();
contentContainer.style.display='block';">
So when the page loads (its body), the onload event is triggered and the
BuildNewTabPage() method gets called. The about
:Tabs page should look
similar to the image below:
http://origin.arstechnica.com/news.m...bout-tabs1.png
or
http://apcmag.com/images/03NewTabs.jpg
or
http://registry.cesabarre.com/Tweaks...age/error1.gif
Alas, all that gets painted is the "What do you want to do next?" line,
a blank section, and a horizontal rule underneath which is a link to
"Learn more about ..." (which is a link to that same web page).
I already tried resetting IE8 (advanced options) and running it in no
add-ons mode. No luck. Rebooting into Windows' Safe Mode didn't help.
Since the resource (tabswelcome.htm web page) appears to come from
ieframe.dll, I looked around to see where it was. It is under
C:\Windows\System32. There are copies of this file elsewhere but are
for older versions, like under C:\Windows\IE8 (maybe that's used when
uninstalling IE8 and going back to the prior version of IE). I looked
in the registry to see how this DLL file was registered. That is, I
checked to see what path was listed for any "server" registry entry that
points at where to find the ieframe.dll file. All of them have the
C:\Windows\System32 path so that's the copy that should get used in any
reference to this DLL that doesn't include a path to it. The version of
ieframe.dll in C:\Windows\System32 is 8.00.60012.18777 and is 11,064,832
bytes in size.
I even ran "sfc /scannow" but the same version of ieframe.dll was left
in C:\Windows\System32. But then I rather expected that result since
this was the same version under the DLLCACHE folder from where the
backup copies are retrieved by the System File Checker utility.
When I try to re-register the DLL file via:
cd \winodws\system32
regsvr32 ieframe.dll
it errors with:
RegSvr32
DllRegisterServer in ieframe.dll failed.
Return code was: 0x80004001
DllRegister is an exported method of the DLL to define how to register
that library in the registry (i.e., it's an entry point in the DLL that
runs code to define how it gets registered). I tried de-registering it
(to then re-register it) but also get the same error. I even booted
into Window's Safe Mode but could not register it. I have a virtual
machine with a clean install of Windows XP Pro SP-3 + Windows updates
(except for IE8 so IE7 still runs in that VM). I still could not
register ieframe.dll inside the test VM so I'm wondering what happens in
all those articles when users try to follow the advice to re-register
this DLL. It fails when I try to re-register it; however, registration
often involves adding definitions in the registry of where to find the
DLL (and perhaps define some functions for particular calls to it) and
my registry entries (that have paths specified to the ieframe.dll) all
point to the one located in C:\Windows\System32.
I found in the registry where these About URLs are defined (about
:home,
about
:Tabs, etc) and the definitions there look good:
Key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\AboutURLs
Data items (and their values):
"NavigationFailure"="res://ieframe.dll/navcancl.htm"
"DesktopItemNavigationFailure"="res://ieframe.dll/navcancl.htm"
"NavigationCanceled"="res://ieframe.dll/navcancl.htm"
"OfflineInformation"="res://ieframe.dll/offcancl.htm"
"Home"=dword:0000010e
"blank"="res://mshtml.dll/blank.htm"
"PostNotCached"="res://ieframe.dll/repost.htm"
"NoAdd-ons"="res://ieframe.dll/noaddon.htm"
"NoAdd-onsInfo"="res://ieframe.dll/noaddoninfo.htm"
"SecurityRisk"="res://ieframe.dll/securityatrisk.htm"
"Tabs"="res://ieframe.dll/tabswelcome.htm"
"InPrivate"="res://ieframe.dll/inprivate.htm"
From searches, it appears the Tabs data item is correctly defined (as
opposed to malware that attempts to usurp these pages). I entered
"res://ieframe.dll/<page>.htm" in the Address Bar to test each of these
and all of them worked except for tabswelcome.htm which had the script
error reporting a missing element (which I'm guessing is the
BuildNewTabPage() method from some NewTabPageScripts.
js script file).
I don't know how to dig into a DLL to determine where it defines these
resources and what are their values (i.e., what should be their HTML
content). However, when I view the source for the about
:Tabs page
display, nothing strikes me as missing. It appears that Javascript is
used to dynamically build the page. Line 144 (where the error is
reported) runs the window.external.BuildNewTabPage() method for the
onload event (when the page loads). I'm not sure where this function is
defined except that maybe it is in the .
js Javascript file defined in
the <HEAD> section, as in:
<script src="NewTabPageScripts.
js" ...>
Presumably this is yet another resource within ieframe.dll because I
cannot find this .
js file anywhere on my drive. My guess is that the
BuildNetTabPage() method is used to dynamically construct all the
content on the about
:Tabs page between the "What do you want to do
next?" line to the horizontal rule and "Learn more ..." lines. To make
sure scripting was enabled, I used web sites that test Javascript, like
http://www2.webkit.org/perf/sunspide...sunspider.html, and they
passed. So it's not that scripting was somehow disabled in IE8.
I did poke around inside of the ieframe.dll.mui file (also under
C:\Windows\System32) and did find the HTML code for the TabsWelcome.htm
web page in there; however, the NewTabPageScripts.
js script file where
this function is probably defined was not found in this .mui file. I
went searching through the contents of files for "NewTabPageScripts.
js"
but got no hits.
I ran out of ideas of where to dig next in trying to fix the about
:tabs
page other than to try System Restore, seeing if IE8 will re-install
atop of itself (and possibly step atop of whatever is ailing it now), or
to walk back through incremental image backups to see when the problem
disappears. I could switch to using about
:blank as the home page but
I'd like to get back the functionality of the about
:tabs page (and also
because that is the page displayed when a new tab is opened).