Workaround for Common Performance Issue with Virtualized Internet Explorer
Various performance issues sometimes occur when an IE layer is imported, activated, and then when the virtual IE layer is first launched. Additional performance issues occur when clicking on a tab or when opening the IE options menu.
The performance delays are caused by the iexplore.exe.local file which causes IE to resolve DLL names repeatedly. The iexplore.exe.local file exists so that you can have different versions of Internet Explorer. However, when the loader first sees this file it causes the load path to start using the current path and then the normal search path for all loading DLLs and no DLL caching.
Microsoft started caching commonly used files (KnownDLLs) which are loaded into memory and a new section pointer is created to the loaded file when they are needed. This caching saves a lot of time for these DLLs.
The issue arises because the IE layer has updated two of the Known DLLs (urlmon.dll and wininet.dll). If the iexplore.exe.local file isn't in the layer then the wrong version of the urlmon.dll and wininet.dll files are used causing the performance issues.
The workaround is to create two manifest files. In the IE layer rename the iexplore.exe.local and create an iexplore.exe.manifest and mshtml.dll.manifest file with the following data:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="184.108.40.206" processorArchitecture="x86" name="redirector" type="win32" /> <description>DLL Redirection</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="220.127.116.11" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> <file name="urlmon.dll" /> <file name="wininet.dll" /> <file name="iertutil.dll" /> </assembly>