Skip to content

About

Open legacy pages in a real Internet Explorer (Trident) window right from Chrome/Edge. ActiveX, DVR and corporate controls just work. Chrome extension + .NET WinForms native host over Native Messaging.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

17 Commits

Folders and files

Repository files navigation

English · Русский

IE Mode Viewer

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

License Chrome Edge .NET

IE Mode Viewer

Why This Project?

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.

Screenshots

IE viewer window IE viewer — rendered page
IE viewer — ActiveX/DVR page Extension popup

Features

  • 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.exe without the extension: tray icon + global hotkey (Ctrl+Alt+E) opens the active Chrome tab in the IE viewer.

Architecture

┌──────────────┐   ┌─────────────────────┐   ┌────────────────────────────────────┐
│  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.exe runs 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-port and 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.ps1 rewrites the host manifest and registry keys every time it runs.

Tech Stack

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)

How It Works

  1. Click the extension icon — the popup checks whether the native host is installed and enabled.
  2. Click Open in IE — the popup sends the active tab's URL to the service worker.
  3. background.js calls chrome.runtime.sendNativeMessage → IEHost.exe.
  4. IEHost.exe reads the JSON request, then spawns itself with --viewer <url>.
  5. The viewer process applies HKCU registry tweaks: IE11 emulation, ActiveX support, Trusted Sites, SSL bypass.
  6. A WinForms window opens with the WebBrowser (Trident) control and navigates to the URL.
  7. For whitelisted URLs the content script triggers the same flow automatically.

Standalone mode (no extension)

  1. Run IEHost.exe --standalone (or the desktop shortcut created by install.ps1 -Standalone).
  2. On first run, a dialog asks for the default URL; the tray icon and the global hotkey Ctrl+Alt+E become active.
  3. With Chrome open, press the hotkey — the active tab's URL is read via CDP and opened in the IE viewer.
  4. The viewer always reopens the last visited URL (lastUrl) — right-click the tray icon to change the hotkey or exit.
  5. Use install.ps1 -Standalone -Autostart to add the tray app to Windows startup (HKCU Run).

Quick start (non-technical users)

  1. Download IEHost.exe — a single self-contained file, nothing else needed.
  2. Double-click it, read the ActiveX / Trusted Sites warning and confirm installation (desktop shortcut is created).
  3. On first run enter your DVR / portal address — the page opens in the IE viewer.
  4. 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.

Installation

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 keep extension.pem local and private — it is excluded from this repository.

Prerequisites

  • 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.

Commands

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

Troubleshooting

Nothing happens when you double-click IEHost.exe (Windows 11)

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.

Roadmap

  • 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

License

Released under the MIT license.

About

Open legacy pages in a real Internet Explorer (Trident) window right from Chrome/Edge. ActiveX, DVR and corporate controls just work. Chrome extension + .NET WinForms native host over Native Messaging.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages