Open legacy pages in a real Internet Explorer (Trident) window right from Chrome/Edge — ActiveX, DVR and corporate controls just work. Works with or without the extension (standalone tray mode).
Screenshots · Features · Architecture · Installation · Roadmap
IE Mode no longer supports our environment, so I built my own replacement.
Some legacy web apps — DVR systems, corporate portals, industrial software — still require ActiveX controls that only run in Internet Explorer. This extension opens such pages in a dedicated IE (Trident) window from Chrome/Edge with a single click.
Security warning. The viewer enables ActiveX and adds every host it opens to the IE Trusted Sites zone (per-user, HKCU). It also relaxes SSL, DEP and file-download checks for the viewer process. Use it only for trusted legacy pages — DVR systems, corporate portals, intranet — and never browse unknown public websites in it. Legacy pages can run arbitrary ActiveX/scripting with reduced protection.
![]() |
![]() |
![]() |
![]() |
- One-click open — send the current tab to the IE viewer from the toolbar popup.
- Auto-open whitelist — glob patterns in the options page; matching URLs open in IE automatically.
- Native Messaging — Chrome talks to a .NET host over a JSON stdin/stdout protocol.
- IE7–IE11 emulation switch — toolbar button cycles the document mode, no registry fiddling.
- ActiveX enabled — installs allowed, filtering off, DEP workaround, safe scripting for controls.
- Trusted Sites auto-add — the page's host lands in the IE Trusted Sites zone.
- SSL error pages bypassed — legacy certificates no longer block the page.
- Per-user install — HKCU registry only, no admin rights required, registered for Chrome and Edge.
- Standalone mode — run
IEHost.exewithout the extension: tray icon + global hotkey (Ctrl+Alt+E) opens the active Chrome tab in the IE viewer.
┌──────────────┐ ┌─────────────────────┐ ┌────────────────────────────────────┐
│ Popup / │ │ Service worker │ │ IEHost.exe (.NET 11, win-x86) │
│ options / │──▶│ background.js │──▶│ NativeMessaging loop (stdio JSON) │
│ content │ │ sendNativeMessage │ │ └─ spawn --viewer <url> │
│ script │ └─────────────────────┘ │ ViewerForm (WinForms) │
└──────────────┘ │ └─ WebBrowser (Trident) │
│ HKCU reg tweaks (IE / ActiveX) │
└────────────────────────────────────┘
- Chrome ↔ host IPC uses the Native Messaging protocol: 4-byte little-endian length + UTF-8 JSON on stdin/stdout.
- Standalone mode:
IEHost.exeruns a tray app with a global hotkey. It finds Chrome via the registry (App Paths, falls back to Edge), launches a managed Chrome with--remote-debugging-portand a dedicated profile (%LOCALAPPDATA%\IEHost\ChromeProfile), then reads the active tab over the Chrome DevTools Protocol. First run asks for a default URL; the viewer always opens the last visited URL (lastUrl). - The viewer runs as a separate 32-bit (
win-x86) process — legacy DVR ActiveX controls are 32-bit COM components and won't load in a 64-bit process. - IE and ActiveX settings are applied per-user (HKCU) at viewer startup — no admin rights needed.
- The extension ID is dynamic during development;
install.ps1rewrites the host manifest and registry keys every time it runs.
| Layer | Technology |
|---|---|
| Extension | Chrome/Edge Manifest V3, vanilla JS (no build tooling) |
| Native host | C# / .NET 11 (net11.0-windows) |
| UI | Windows Forms + WebBrowser control (Trident engine) |
| IPC | Native Messaging (JSON over stdio) |
- Click the extension icon — the popup checks whether the native host is installed and enabled.
- Click Open in IE — the popup sends the active tab's URL to the service worker.
background.jscallschrome.runtime.sendNativeMessage→IEHost.exe.IEHost.exereads the JSON request, then spawns itself with--viewer <url>.- The viewer process applies HKCU registry tweaks: IE11 emulation, ActiveX support, Trusted Sites, SSL bypass.
- A WinForms window opens with the
WebBrowser(Trident) control and navigates to the URL. - For whitelisted URLs the content script triggers the same flow automatically.
- Run
IEHost.exe --standalone(or the desktop shortcut created byinstall.ps1 -Standalone). - On first run, a dialog asks for the default URL; the tray icon and the global hotkey
Ctrl+Alt+Ebecome active. - With Chrome open, press the hotkey — the active tab's URL is read via CDP and opened in the IE viewer.
- The viewer always reopens the last visited URL (
lastUrl) — right-click the tray icon to change the hotkey or exit. - Use
install.ps1 -Standalone -Autostartto add the tray app to Windows startup (HKCU Run).
- Download IEHost.exe — a single self-contained file, nothing else needed.
- Double-click it, read the ActiveX / Trusted Sites warning and confirm installation (desktop shortcut is created).
- On first run enter your DVR / portal address — the page opens in the IE viewer.
- Double-click the IE Mode Viewer shortcut on the desktop anytime to open it again.
The app is also installed when you double-click the file from any folder (Downloads, etc.) — the install prompt appears first.
Uninstall — like any app: Settings → Apps → IE Mode Viewer → Uninstall, or right-click the tray icon → Uninstall. The viewer, shortcut and settings are removed.
Requires Windows 10/11. The .NET 11 SDK is only needed if you build the host from source — end users just run the pre-built IEHost.exe (see prerequisites).
git clone https://github.com/DVR-Claw-Aist/Chrome-extension-IE-Mode-Viewer.git
cd Chrome-extension-IE-Mode-Viewer
dotnet publish -c Release -r win-x86 --self-contained native\IEHost\IEHost.csproj
.\install.ps1 -ExtensionId <ID>Load the extension at chrome://extensions → enable Developer mode → drag extension.crx onto the page, or click Load unpacked and pick extension/. The extension ID is shown in the popup or at chrome://extensions.
The extension ID is dynamic during development. Native messaging must be re-registered whenever it changes:
.\install.ps1 -ExtensionId <ID>. To fix the ID permanently, pack the extension with a private key (Chrome → Pack extension) and keepextension.pemlocal and private — it is excluded from this repository.
- Windows 10 or 11
- .NET 11 SDK — only to build the host: a system install in
PATH, or pass.\install.ps1 -DotNetPath <path\to\dotnet.exe> - Chrome or Edge 88+
The .NET SDK is not bundled in this repository and is only needed to build the host (publish is self-contained, so end users don't need .NET). Install it from the .NET 11.0 SDK page.
| Command | Description |
|---|---|
dotnet publish -c Release -r win-x86 --self-contained native\IEHost\IEHost.csproj |
Build the self-contained 32-bit native host |
.\install.ps1 -ExtensionId <ID> |
Install host + register for Chrome and Edge (HKCU, no admin) |
.\install.ps1 -Standalone |
Create a desktop shortcut for the standalone tray app |
.\install.ps1 -Standalone -Autostart |
Also add the tray app to Windows startup (HKCU Run) |
.\install.ps1 -DotNetPath <path> |
Install with a specific .NET SDK path |
Symptom: the app starts and exits silently — no install prompt, no window, no tray icon.
Cause: for a GUI app launched from Explorer the standard input handle is invalid (NULL), and Console.IsInputRedirected returns true for it. Old versions mistook this for a Native Messaging pipe, entered the message loop, hit EOF immediately and exited with code 0.
Fix (included since the pipe-check update): mode detection now verifies that stdin is a real pipe (GetFileType == FILE_TYPE_PIPE) before entering the Native Messaging loop, and falls back to standalone mode if no message arrives. Native Messaging from Chrome is unaffected.
Rebuild the host (dotnet publish ...) and reinstall to get the fix.
- Automated tests (JS + native host)
- Installer (MSI) with SDK path detection
- Right-click context menu item "Open in IE"
- Remember emulation mode per site
- 64-bit host fallback for pages that don't need ActiveX
Released under the MIT license.



