OCX ファイル形式とは?
.ocx ファイルは、Microsoft Windows オペレーティングシステムの ActiveX コントロールモジュールに関連付けられています。この形式は 1994 年に OLE カスタムコントロール として誕生し、1996 年に ActiveX コントロールとしてリブランドされました。構造的には、.ocx ファイルはコンパイルされた Windows PE バイナリであり、実質的には MZ マジックヘッダーで始まり、必須の DllRegisterServer エクスポートを含む COM コントロールインターフェイスを公開する .dll です。
ActiveX は、以下のようなプログラミング言語で開発されたアプリケーションが使用するコンポーネントを管理するためのソフトウェアフレームワークです:
- Visual Basic
- C++
- Delphi
- PowerBuilder
.ocx ファイルに保存されたコントロールにより、Windows 上で動作する様々なアプリケーション間で高速かつ効率的なデータ交換が可能になります。これらは要素間の情報伝達を容易にし、迅速なアプリケーション開発を可能にします。各コントロールは regsvr32 file.ocx を実行することで Windows レジストリに登録されます。登録を解除するには regsvr32 /u file.ocx を使用します。コントロールは、ページ内の Web ブラウザアプレットなど、様々な環境でコンポーネントを実行するためにも使用できますが、Microsoft Edge で ActiveX サポートが廃止され、2022年から2023年にかけて Internet Explorer が引退したため、この用途は現在レガシーと見なされています。.rsrc セクション内の埋め込み .tlb タイプライブラリは、ホストツールに対してコントロールのインターフェイスを記述します。
ActiveX はシステムをさらす既知のセキュリティリスクがあるため、無効にすることが推奨されます。ActiveX を無効にすると、ブラウザやレガシーなホストアプリケーションによる .ocx ファイルの読み込みが防止されます。新しい Windows 開発では、WinForms や WPF コントロールが事実上 ActiveX モデルに取って代わっています。
セキュリティと安全性
リスク: HIGHOCX は Windows の深部(COM/CLSID)に自身を登録する実行可能コードであるため、注意が必要です。リスク:悪意のある、またはトロイの木馬化された ActiveX コントロールは、ホストアプリの権限で実行される可能性があり、ActiveX は歴史的に Internet Explorer(現在は引退)における主要なドライブバイダウンロードのベクトルでした。«OCX ダウンロード» サイトは典型的なマルウェア/PUP の経路であり、通常はバージョンが異なるコントロールを提供するため、アプリの修正には役立ちません。ルール:OCX の欠落エラーは、サードパーティのサイトからダウンロードするのではなく、そのコントロールを所有するプログラムを再インストールすることで修正してください。既知の Microsoft 製コントロール(例:MSCOMCTL.OCX)を入手する必要がある場合は、公式の Microsoft パッケージから入手してください。不明な OCX を登録する前に、デジタル署名(プロパティ > デジタル署名)を確認し、VirusTotal でスキャンしてください。信頼できない OCX ファイルは決して登録しないでください。
形式の詳細
概要OCX ファイルを開くプログラム
技術的詳細
詳細仕様| ファイル構造 | PE (Portable Executable) バイナリ - .dll と同じコンテナ。DOS スタブ + MZ ヘッダー、PE/COFF ヘッダー、セクションテーブル、コード/データセクション、および .rsrc リソースセクションで構成 |
| マジックバイト | オフセット 0 に 0x4D 0x5A («MZ»)。DOS e_lfanew フィールド (0x3C) に格納されたオフセットに PE シグネチャ 0x50 0x45 0x00 0x00 |
| PE バリアント | PE32 (x86/32ビット) または PE32+ (AMD64/x64)。COFF Characteristics フィールドに DLL 特性フラグ (0x2000) が設定 |
| 必須エクスポート | DllRegisterServer, DllUnregisterServer, DllGetClassObject, DllCanUnloadNow - 自己登録型 COM サーバーに必須 |
| 登録メカニズム | regsvr32 file.ocx が Windows レジストリの HKCR\CLSID\{...} 配下に CLSID、ProgID、およびタイプライブラリ GUID を書き込みます。regsvr32 /u はこれらを削除します |
| COM インターフェイス (UI コントロール) | IUnknown を実装する必要があります。インプロセス UI コントロールはさらに、スクリプトや VBA オートメーション用に IOleObject, IOleControl, IOleInPlaceObject, IDispatch を公開します |
| 埋め込みタイプライブラリ | コンパイルされた .tlb タイプライブラリリソースは通常 .rsrc PE セクションに埋め込まれ、IDE や VBA ホストに対してコントロールのインターフェイスを記述します |
| バイト順序 | リトルエンディアン (Intel/x86 ネイティブ) |
| エンコーディング | バイナリ (コンパイルされたネイティブコード - インタープリタやテキストベースではない) |
| 一般的なファイルサイズ | コントロールの数と埋め込まれた UI リソースに応じて 20 KB ~ 10 MB |
| Authenticode サポート | 発行元確認のためのオプションの Authenticode デジタル署名。PE ヘッダーの CheckSum フィールドが基本的な整合性チェックを提供 |
| MIME タイプ | application/octet-stream (.ocx 固有の MIME タイプは登録されていません) |
| ホスト依存性 | 単独では実行できません。COM 対応ホスト(VB6 IDE、MFC/ATL アプリケーション、Office VBA ユーザーフォーム、またはレガシーな Internet Explorer)によってインスタンス化される必要があります |
| セキュリティステータス | 高リスク(ホストプロセス内での任意のネイティブコード実行)と見なされます。Microsoft Edge で廃止され、2022年から2023年にかけて Internet Explorer とともに引退しました |
| 前身の形式 | 1991年に Visual Basic 1.0 で導入された 16 ビットの .vbx (Visual Basic Extension) コントロールを置き換えました |
| プラットフォームサポート | Windows (Win32 / Win64) のみ。macOS や Linux でのネイティブサポートはありません |
| リリース日 | 1994 (OLE Custom Controls / OCX); rebranded ActiveX Controls in 1996 |
| 最新バージョン | N/A (tied to the COM/ActiveX model; effectively frozen, legacy on modern Windows) |
| 仕様書 | learn.microsoft.com |
OCX の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。OCX ファイルについて最初の質問をしてみましょう。