ActiveXはいつまで使える?既定無効化の最新状況と移行手順を解説

技術・開発

はじめに

「Excelのファイルを開いたら、ボタンが押せなくなった」
「IEモードで動いている社内システム、あと何年もつのか誰も答えられない」

現場でよく聞く相談だ。原因の多くはActiveX。1996年に登場した、Windows専用の古い部品技術になる。

ここで最初に、ひとつ誤解を解いておきたい。ActiveXは「廃止された」わけではない。既定で無効になっただけで、設定を戻せば今も動く。ただし、動くからといって放置していい状態でもない。この「まだ動くが、もう安全でも安泰でもない」という中途半端な位置こそが、担当者を悩ませている正体だ。

この記事では、次の3点を実務ベースで整理する。

  1. 2026年8月時点で、ActiveXとIEモードが実際どういう扱いになっているか
  2. 自社に依存箇所がどれだけあるかを、コマンドで洗い出す方法
  3. HTML+JavaScriptやWebView2へ、何を基準にどう置き換えるか

そのまま社内展開できるよう、PowerShellやJavaScriptのコード例、判断用の表も載せた。


スポンサーリンク
スポンサーリンク

現状把握:いま何が決まっていて、何が決まっていないのか

まず事実だけを時系列で並べる。噂と公式発表が混ざりやすい領域なので、ここは正確に押さえてほしい。

時期 何が起きたか
2022年6月 Internet Explorer 11 デスクトップアプリが特定OSでサポート終了
2024年10月 Office 2024(永続版)で、ActiveXコントロールが既定で無効に
2025年4月 Microsoft 365 Apps(バージョン2504以降)でも既定で無効に
2025年8月〜10月 EdgeのIEモードを悪用した攻撃を確認。Microsoftが起動導線を削除
2027年ごろ(予定) VBScriptがオンデマンド機能として既定で無効化、その後Windowsから削除予定
少なくとも2029年まで EdgeのIEモードはサポート継続。廃止する場合は1年前に告知

「無効化」であって「削除」ではない

Office 2024とMicrosoft 365の変更内容は、既定設定が「確認してから有効化」から「通知なしですべて無効」へ切り替わった、というものだ。対象はWord、Excel、PowerPoint、Visio。ファイルを開くとメッセージバーにブロックの表示が出て、既存のActiveXオブジェクトは静止画像のように見えるだけになり、操作はできない。

重要なのは、MicrosoftがActiveXの完全削除やサポート終了を宣言していない点だ。トラストセンター、グループポリシー、レジストリのいずれかを変更すれば再有効化できる。

では安心か。むしろ逆になる。参考になるのがVBScriptの前例で、こちらは「非推奨 → オンデマンド機能化 → 既定で無効 → 削除」という段階を踏むスケジュールが公表済みだ。ActiveXも既定無効という同じ第一段階に入った。明確な期限がないぶん、社内で危機感を共有しづらく、対応が後回しになりやすい。ここが厄介なところだ。

IEモードは「動くから安全」ではない

2025年8月、Microsoftのブラウザセキュリティチームが攻撃の報告を受けた。攻撃の流れはこうなる。

  1. 正規サイトに見せかけた偽サイトへ誘導する
  2. ページ上の案内で「IEモードで再読み込み」させる
  3. IEの古いJavaScriptエンジン(Chakra)の未修正の脆弱性を突いてコードを実行する
  4. さらに別の脆弱性で権限を昇格し、端末を掌握する

技術的に高度なのは後半だけで、入口はごく普通のソーシャルエンジニアリングだ。「このサイトはIEモードで見てください」という文言に、業務で慣れてしまっている組織ほど引っかかりやすい。

Microsoftの対応は素早かった。ツールバーのボタン、右クリックメニュー、ハンバーガーメニューからIEモードの起動項目を削除。以降は設定画面(edge://settings/defaultBrowser)で明示的に許可し、URLを1件ずつ登録する方式になった。企業向けのグループポリシーやIntuneによる管理は従来どおり使える。

つまりIEモードは、いまや「管理された例外」だ。誰でも気軽に押せるボタンではなくなった。

なぜActiveXは構造的に危ないのか

理由はシンプルで、権限の設計思想が現代と真逆だからだ。

現代のブラウザは、JavaScriptをサンドボックス(隔離された実行環境)の中で動かす。ファイルもカメラもマイクも、ユーザーが明示的に許可した範囲しか触れない。

一方でActiveXコントロールは、ネイティブアプリとほぼ同じ権限で動く。ローカルファイルシステムへのアクセスも、レジストリの変更も可能だ。一度「有効化」を押させれば、攻撃者は端末の中で自由に動ける。だからこそ、ActiveXは長年マルウェアの配布経路として使われ続けてきた。


手順1:ActiveX依存を洗い出す

対策は棚卸しから始まる。「たぶん使っていない」は根拠にならない。実際に探そう。

Officeファイルの中を調べる

xlsx / docx / pptx はZIP形式だ。中身に activeX/ フォルダがあれば、ActiveXコントロールが埋め込まれている。ファイルサーバー全体を一括で調べられる。

# 共有フォルダ配下のOfficeファイルからActiveX埋め込みを検出する
Add-Type -AssemblyName System.IO.Compression.FileSystem

Get-ChildItem -Path "\\fileserver\share" -Recurse -File `
  -Include *.xlsx,*.xlsm,*.docx,*.docm,*.pptx,*.pptm -ErrorAction SilentlyContinue |
ForEach-Object {
    $file = $_
    try {
        $zip = [System.IO.Compression.ZipFile]::OpenRead($file.FullName)
        $hits = @($zip.Entries | Where-Object { $_.FullName -like "*activeX/*" })
        if ($hits.Count -gt 0) {
            [PSCustomObject]@{
                Path      = $file.FullName
                Controls  = $hits.Count
                Updated   = $file.LastWriteTime
            }
        }
        $zip.Dispose()
    }
    catch {
        Write-Warning "読み取り失敗: $($file.FullName)"
    }
} | Export-Csv .\activex_report.csv -NoTypeInformation -Encoding UTF8

出力されたCSVがそのまま棚卸し表になる。最終更新日を入れておくのがコツだ。5年以上更新されていないファイルは、そもそも業務で使われていない可能性が高い。捨てる判断の材料になる。

Webシステムとスクリプトを調べる

社内Webアプリ、VBS、HTAの中も見てほしい。危険信号は次の3つになる。

# ソースコード内のActiveX参照を検索
Select-String -Path "C:\webroot\*" -Include *.html,*.htm,*.asp,*.aspx,*.js,*.vbs,*.hta `
  -Pattern 'classid\s*=|\.ocx|CreateObject\s*\(|ActiveXObject' -Recurse |
  Select-Object Path, LineNumber, Line
見つかる記述 意味
<object classid="clsid:..."> HTMLに直接ActiveXを埋め込んでいる
.ocx / codebase= ActiveXコントロール本体の配布指定
new ActiveXObject(...) JavaScriptからのActiveX呼び出し(IE専用)
CreateObject(...) VBA/VBScriptからのCOMオブジェクト生成

IEモードの利用実態を調べる

Enterprise Mode サイトリスト(IEモードで開くURLの一覧)を管理しているなら、そのXMLがそのまま「レガシー依存システムの一覧」になる。管理していない場合は、まずサイトリストによる管理へ移行してほしい。誰がどのサイトをIEモードで開いているかを可視化しないと、移行計画は立てられない。


手順2:影響度で仕分ける

洗い出した結果を、そのまま全部作り直そうとすると必ず頓挫する。4分類で整理しよう。

分類 判断の目安 対応方針
廃棄 直近1年以上使われていない 削除・アーカイブ。工数ゼロで件数が減る
代替可 日付選択、リスト表示、カレンダーなど汎用UI Excel標準のフォームコントロールやWeb標準に置換
要改修 ローカル機器制御、帳票印刷、電子証明書連携 設計から見直す。最も工数がかかる
例外運用 業務停止に直結し、改修に時間が必要 期限を切って再有効化。放置しない

経験上、最初の棚卸しで挙がったファイルの半分近くは「廃棄」に落ちる。まずここから着手すると、対象が一気に減って全体像が見えてくる。


手順3:どうしても必要な部分だけ、期限付きで例外運用する

業務が止まる状況では、一時的な再有効化も現実的な選択になる。ただし条件をつけてほしい。

  • 対象部署・対象ファイルを限定する
  • 「いつまでに置き換えるか」を文書に残す
  • 有効化した端末を台帳で管理する

再有効化の方法は3つある。

1. トラストセンター(個人単位・最も安全)
ファイル → オプション → トラストセンター → トラストセンターの設定 → ActiveXの設定

2. グループポリシー(組織単位)
ユーザーの構成 → 管理用テンプレート → Microsoft Office 2016 → セキュリティ設定 → 「すべてのActiveXを無効にする」を「無効」に設定

3. レジストリ

HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security\DisableAllActiveX = 0 (REG_DWORD)

なお、トラストセンターの項目がグレーアウトしている場合は、管理者がポリシーで一括制御している。個人では変更できない。

設定変更は該当ファイルだけでなく、Word・Excel・PowerPoint・Visio全体に効く点にも注意したい。1つのファイルのために、すべてのOfficeファイルの防御を下げることになる。


手順4:移行先を選ぶ

ここからが本題だ。「とりあえずHTML5とJavaScriptで」と決める前に、用途で分ける。

ブラウザ内で完結する処理か?
├─ Yes → Web標準(HTML + JavaScript)へ移行
│        SPA化するならReact / Vue.jsなど
└─ No(ローカル機器・OS機能が必要)
   ├─ 社内端末が限定される → WebView2 / Electronでデスクトップアプリ化
   └─ 機器メーカー製ドライバが必須 → ローカル常駐サービス + REST APIで橋渡し

WebView2は、Edgeの描画エンジンをデスクトップアプリに埋め込む仕組みだ。画面はWeb技術で作りつつ、ファイルやデバイス操作はネイティブ側に任せられる。IEモード依存の社内システムを移す先として、現実的な着地点になることが多い。


手順5:Web標準APIの「本当の対応範囲」を確認する

ここが他の解説記事といちばん差が出るところなので、丁寧に書く。

「ActiveXでしかできなかったことは、いまやWeb APIでできる」というのは半分正解だ。残り半分は、ブラウザを選ぶ。

API できること 対応状況(2026年時点)
getUserMedia / WebRTC カメラ・マイク、映像通話、P2P通信 主要ブラウザで広く対応
File System Access API ローカルファイルの直接読み書き Chrome / Edge 86以降とOpera。FirefoxとSafariはOPFSのみでファイル選択ダイアログ非対応
WebUSB USB機器への直接接続 Chromium系のみ。Firefox・Safari非対応(世界シェア約76%)
Web Serial シリアル機器(計測器、レジ周辺機器など) Chrome / Edge 89以降。Safari・Firefox安定版は非対応(約72%)
Web Bluetooth BLE機器との通信 Chromium系中心。Safari非対応

つまり社内標準ブラウザがEdgeやChromeなら、これらは十分に実用範囲だ。逆に「Macも使う」「iPadからも使う」という要件があるなら、File System Access APIやWebUSBを前提にした設計は破綻する。

対策はフォールバックの用意になる。ファイル保存を例にすると、こう書ける。

async function saveCsv(text, filename = "report.csv") {
  const blob = new Blob([text], { type: "text/csv;charset=utf-8" });

  // Chrome / Edge:保存先をユーザーが選べる
  if ("showSaveFilePicker" in window) {
    try {
      const handle = await window.showSaveFilePicker({ suggestedName: filename });
      const writable = await handle.createWritable();
      await writable.write(blob);
      await writable.close();
      return;
    } catch (err) {
      if (err.name === "AbortError") return; // ユーザーがキャンセル
      console.warn("ピッカー保存に失敗。従来方式へ切り替えます", err);
    }
  }

  // Safari / Firefox / モバイル:ダウンロードフォルダへ保存
  const url = URL.createObjectURL(blob);
  const a = document.createElement("a");
  a.href = url;
  a.download = filename;
  a.click();
  URL.revokeObjectURL(url);
}

10行程度の分岐で、対応環境が一気に広がる。「新しいAPIを使う」ではなく「使えない環境でも壊れないように書く」。これが移行を成功させる分かれ目になる。


手順6:IEモードからの出口を設計する

EdgeのIEモードは、少なくとも2029年まではサポートされ、廃止する場合は1年前に告知される方針が示されている。

ここで押さえるべきは、2029年は「準備を始める期限」ではなく「移行を完了しておく期限」だという点だ。業務システムの改修は、要件定義から本番稼働まで1〜2年かかることも珍しくない。逆算すると、着手はもう遅いくらいになる。

加えて、IEモードはEdgeとWindowsのライフサイクルに乗った機能だ。Edgeは原則として最新版のみがサポート対象なので、更新のたびに挙動が変わる可能性がある。実際、Edgeの更新後にIEモードの表示が崩れる、起動しないといったトラブルは各所で報告されている。「2029年まで安泰」という前提で計画を立ててはいけない。

当面の運用としては、次の3点で管理する。

  1. サイトリストに登録したURLだけをIEモードで開く(登録外は原則禁止)
  2. 登録URLごとに移行担当と期限を紐づける
  3. 四半期ごとに登録件数を棚卸しし、減っているかを確認する

登録件数を減らすこと自体をKPIにすると、進捗が数字で見えて社内説明がしやすくなる。


手順7:ベンダーと社内に確認を投げる

自社開発でないシステムは、まず状況確認から。次のような内容で十分だ。

お世話になっております。
現在ご提供いただいている「〇〇システム」について、以下の3点をご確認いただけますでしょうか。

  1. ActiveXコントロール(.ocx)への依存の有無
  2. Microsoft EdgeのIEモード以外での動作可否
  3. モダンブラウザ対応版の提供予定と、その時期

Office 2024およびMicrosoft 365でActiveXが既定無効となったこと、EdgeのIEモードのサポート期限を踏まえ、社内の移行計画を策定しております。

回答が「対応予定なし」なら、それは製品の乗り換えを検討すべきサインだ。逆に「対応版が2027年に出る」といった具体的な回答が得られれば、それを起点に社内スケジュールを組める。


まとめ

ここまでの内容を、実務で使う優先順に整理する。

  • ActiveXは削除されたのではなく、Office 2024(2024年10月)とMicrosoft 365(2025年4月)で既定無効になった。再有効化は可能だが、それは延命であって解決ではない
  • IEモードは2025年に実際の攻撃で悪用され、起動導線が制限された。「動くから安全」は成り立たない
  • 対応の第一歩は棚卸し。PowerShellでOfficeファイルとソースコードを検索すれば、数時間で全体像がつかめる
  • 移行先はブラウザ内完結ならWeb標準、機器制御が必要ならWebView2やローカルサービス連携
  • File System Access APIやWebUSBはChromium系限定。フォールバックを書けば実運用に耐える
  • IEモードのサポートは少なくとも2029年まで。ただしそれは完了期限であり、準備の開始期限ではない

棚卸しさえ済めば、「何を捨てて、何をいつまでに直すか」が数字で語れるようになる。予算も工数も、そこから初めて動き出す。

今日できる最初の一歩

手順1のPowerShellスクリプトを、自部門の共有フォルダに対して1回実行してみてほしい。所要時間は数分から数十分。出てきたCSVの行数が、あなたの組織が抱えている負債の大きさになる。

0行なら安心していい。3桁なら、来週の会議の議題にしよう。


参考リンク




コメント