ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
概要
CAB(Cabinet ファイル、拡張子 .cab)は、Microsoft が Windows 95 時代に策定したアーカイブ・圧縮形式です。当時の Windows インストール CD-ROM では WIN95_02.CAB のような分割キャビネットファイルにシステムファイル一式が格納されており、現代に至るまで Windows OS の内部配布フォーマットとしての中核を担い続けています。
表からは見えにくい形式ですが、実は私たちが日常的に触れている多くの Windows コンポーネントが CAB を介して配信されています。たとえば Windows Update の累積パッケージ(.msu)の内部は CAB ですし、サードパーティのデバイスドライバを INF 経由でインストールする際の本体も CAB アーカイブです。Microsoft Office のセットアップ媒体、Visual C++ ランタイム配布、各種 OS イメージのコンポーネントなどでも広範に使われています。
CAB は単なる「Windows 専用 ZIP」ではなく、コード署名(Authenticode)と ボリューム分割を仕様レベルで備えており、エンタープライズでの信頼配布に耐える設計になっている点が特長です。
内部構造とマジックナンバー
CAB ファイルはマジック「MSCF」で始まる固定ヘッダの後、フォルダ(圧縮単位)情報、ファイルエントリ、データブロックが続く構造です。
| オフセット | 内容 | 値・説明 |
|---|---|---|
| 0-3 | マジックナンバー | 4D 53 43 46("MSCF") |
| 4-7 | Reserved1 | 常に 0 |
| 8-11 | cbCabinet | キャビネット全体のサイズ |
| 16-19 | coffFiles | 最初のファイルエントリのオフセット |
| 24-25 | versionMinor / Major | 通常 1.3 |
| 26-27 | cFolders | 含まれるフォルダ数 |
| 28-29 | cFiles | 含まれるファイル数 |
| 30-31 | Flags | 分割 / Reserve 領域有無 |
圧縮アルゴリズムはフォルダ単位で指定可能で、選択肢は次の 3 種です。
- MSZIP: DEFLATE 互換(ZIP と同じ)。汎用性が高いが圧縮率は中程度
- Quantum: 1990 年代に Microsoft が買収したアルゴリズム。レガシ用途
- LZX: Microsoft 独自の高圧縮アルゴリズム。Windows Update や CHM(Compiled HTML Help)で多用
これらに加えて「無圧縮(Store)」も選択可能。Authenticode 署名は CAB ファイル末尾にデジタル署名ブロックとして付与され、Windows のドライバインストール時に検証されます。
主な用途
- Windows OS インストール媒体: install.wim 内部、Setup.exe が呼び出す各種コンポーネント CAB
- Windows Update:
.msuパッケージ内部、累積更新の差分配信 - デバイスドライバ配布:
.inf+.cabの組み合わせ。Windows Update カタログからの個別ドライバ DL も CAB - サードパーティインストーラ内部: InstallShield, Wise, Advanced Installer などが生成する MSI/EXE の内部
- 古いソフトウェア配布: 1990 年代後半〜2000 年代の CD-ROM ソフトウェア
関連形式との比較
| 形式 | 主用途 | 圧縮率 | 署名対応 | 分割 | OS 親和性 |
|---|---|---|---|---|---|
| CAB | Windows 内部配布 | 中〜高(LZX) | ○ (Authenticode) | ○ | Windows 標準 |
| ZIP | 汎用 | 中 | △(外部署名) | △ | クロス対応 |
| MSI | Windows インストーラ | 内部 CAB 利用 | ○ | × | Windows 標準 |
| WIM | Windows OS イメージ | 高(LZX/XPRESS) | ○ | × | Windows 標準 |
| 7z | 汎用高圧縮 | 非常に高 | × | ○ | クロス対応 |
コマンド・ツール
REM ===== Windows 標準コマンド =====
REM CAB の中身を一覧表示
expand -D driver.cab
REM 単一ファイルを取り出す
expand driver.cab -F:setup.inf C:\temp
REM すべてのファイルを展開
expand driver.cab -F:* C:\temp
REM extract.exe (古い Windows でも利用可)
extract /Y /E driver.cab /L C:\temp
REM ===== CAB の作成 (Windows SDK の makecab) =====
makecab /D CompressionType=LZX /D CompressionMemory=21 mydata.txt mydata.cab
REM ディレクトリ全体を CAB 化 (DDF 定義ファイル経由)
makecab /F directives.ddf
# ===== Linux で CAB を扱う =====
sudo apt install cabextract
# 中身一覧
cabextract -l driver.cab
# 展開
cabextract driver.cab
# 7-Zip でも CAB は読み書き可能
7z l driver.cab
7z x driver.cab -oout/
注意点・落とし穴
- 分割 CAB の取り扱い:
Setup.cab1,Setup.cab2... のように分割されている場合、すべてが同じディレクトリに存在しないと展開できない。ネットワーク経由でダウンロードする際は要注意。 - Authenticode 署名の検証: ドライバ用途では署名なしの CAB は Windows のドライバ署名強制(特に x64)に弾かれる。テスト署名やドライバ署名の理解が必要。
- 古い CAB の脆弱性: CVE-2010-2552(Windows Movie Maker の CAB 解析時バッファオーバーフロー)など、CAB パーサ起因の脆弱性は過去に複数報告されている。未知ソースからの CAB を
expandで展開する際は最新パッチを適用したシステムで実施。 - 長いパス名問題: CAB 内部のファイルパスは Windows の MAX_PATH 制約に当たることがあり、深いディレクトリ配下に展開しようとして失敗するケースがある。
- Quantum/LZX のライセンス: Quantum は Stac Electronics 由来、LZX は元々 Microsoft Network Books 用に開発されたもので、利用は通常 Microsoft ツール経由に限る。サードパーティ実装は
cabextract、libmspackが代表。
関連リンク
- アーカイブ・圧縮形式(親カテゴリ)
- ファイル拡張子とは(概論)
- ZIP(.zip)
- 7z(.7z)
- RAR(.rar)
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?