I prefer the desktop IE interface to the new “Microsoft Edge” browser and I have IE set up the way I want (ad blocking, etc.). I do not want, however, to be constrained by the legacy MSHTML/Trident engine, which IE seems to default to. How can I enable the use of EdgeHTML by default in IE?
There was an option for this in
about:flags, but that interface is unusably broken since IIRC build 10130 and still does not work in RTM as of July 24.
However, this registry setting still works to enable EdgeHTML in IE:
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main] "DisableRandomFlighting"=dword:00000001 "EnableLegacyEdgeSwitching"=dword:00000001
Edit: In Windows 1511 (build 10586), this does no longer work.
There doesn't appear to be any way (as of build 10240) to still do this from within IE;
about:flags seems to be gone entirely. However, (at least on Enterprise edition), you can edit the registry to enable EdgeHTML in IE. Be aware that it doesn't work perfectly, though; while normal browsing works, the browser will identify itself as Edge (and not as IE at all) unless you use the F12 dev tools to change the user agent string. The F12 tools themselves may not work correctly; features like network logging appear to be broken, and trying to switch out of Edge document mode may or may not work (I've had better results with the Emulation tab than with the dropdown on the right side of the top bar of the tools).
Here are some script-ready commands for enabling and disabling EdgeHTML in IE. They do not need to be run elevated, and must not be run as another user (such as an Admin):
reg add "HKCU\Software\Microsoft\Internet Explorer\Main" /v DisableRandomFlighting /t REG_DWORD /d 1 /f reg add "HKCU\Software\Microsoft\Internet Explorer\Main" /v EnableLegacyEdgeSwitching /t REG_DWORD /d 1 /f
To restore default behavior, it is only necessary to clear (or delete) the latter value and restart IE:
reg add "HKCU\Software\Microsoft\Internet Explorer\Main" /v EnableLegacyEdgeSwitching /t REG_DWORD /d 0 /f
EDIT: This hack does work in Win10 Home, but does not work in Win10 build 10586.29 (Version 1511, also known as the "November Update"). At least, I can no longer get it to work on my Win10 Enterprise box after upgrading from build 10240. If anybody knows how to make this work on 10586, that knowledge would be much appreciated!
Complicated pseudo-solution on Win10 post-November-update; not really recommended but mostly functional: replace the MSHTML libraries with their EdgeHTML equivalents. This works... about as well as the earlier hack did for the previous build. Dev tools get a little screwed up and drag-and-drop stops working, but otherwise it mostly does the trick. Note that it does not change IE's user-agent string, which means that a lot of sites will still think you're using Trident instead of just testing what HTML/JS features your browser supports.
- Close all browser-type programs (this includes things the embed MSHTML, like Skype). It might be best to do this immediately after booting the system, and/or under a different user than usual.
- Take ownership of the following files as Administrator:
C:\Windows\SysWOW64\en-US\mshtml.dll.mui. A command you can use for this, from an elevated command prompt, is
takeown /A /F <FILENAME>.
- For each of those files, modify the file's permissions so that you can rename the file. An example (slightly overkill) of how to do this from an elevated command prompt is
icacls <FILENAME> /grant Administrators:F
- For each of those files, rename them to a "backup" name. For example, you might rename
rencommand (as Admin).
- Create symbolic links with the original file names, but pointing to the EdgeHTML versions of the files. For example, you might use the following command:
mklink C:\Windows\System32\mshtml.dll C:\Windows\System32\edgehtml.dll. Note that mklink must be run not only as an Admin but from
CMD.EXE; if you are using Powershell, prefix the mklink command with
cmd /c, as in
cmd /c mklink C:\Windows\System32\mshtml.dll C:\Windows\System32\edgehtml.dll
Rebooting at this point isn't technically needed, but may nonetheless be wise.
I have managed to create the symlink on Windows Server 2016 RTM, that lacks Edge on default, like Windows 10 Enterprise ltsb . I had to create it directly in System32, since mshtml.dll is missing from Program Files/Internet Explorer. But the browsing engine test pages showed Internet Explorer 11. Restored the previous version of the files and discovered that edgehtml.dll is a phantom dll, it is actually mshtml.dll renamed, I so this at version number, it was 11, instead of 14. This is why webpages so it as IE. Maybe this is why you failed in enabling edgehtml.dll in IE, because it seems to be completly absent. You can try, if you want, to check to version of the file edgehtml.dll in Windows 10 Enterprise ltsb, on the Details tab, if it is so.