Содержание статьи

CAB-файлы (сокращение от Cabinet) – это формат архивов, разработанный Microsoft для сжатия и упаковки данных, часто используемый в дистрибутивах ПО, драйверах и обновлениях Windows. В отличие от ZIP или RAR, CAB поддерживает специфические алгоритмы сжатия (LZX, Quantum, MSZIP) и может содержать цифровые подписи для проверки целостности. Если вам нужно извлечь файлы из такого архива, стандартные инструменты Windows или сторонние утилиты справятся с задачей за несколько шагов.
В Windows встроенная утилита expand.exe позволяет распаковать CAB-файлы через командную строку. Например, команда expand файл.cab -F:* C:\путь\назначения извлечёт все файлы в указанную папку. Для работы с многотомными архивами (разделёнными на части) используйте ключ -F:имя_файла, чтобы указать конкретный файл внутри CAB. Альтернатива – 7-Zip или WinRAR, которые поддерживают CAB через графический интерфейс: достаточно открыть архив и перетащить файлы в нужную директорию.
При работе с CAB-файлами из драйверов или обновлений Windows обратите внимание на структуру архива. Часто внутри находятся INF-файлы с инструкциями по установке, CAT-файлы с цифровыми подписями и сами исполняемые модули. Если архив повреждён, попробуйте восстановить его с помощью Microsoft Cabinet SDK или утилиты cabarc.exe, входящей в состав Windows SDK. Для автоматизации процесса распаковки в скриптах используйте PowerShell-команду Expand-Archive -Path "файл.cab" -DestinationPath "папка", но учтите, что она работает только с CAB-файлами, созданными без сложных параметров сжатия.
Какие инструменты нужны для работы с cab файлами в Windows
В Windows для работы с CAB-файлами предустановлены системные утилиты, не требующие дополнительной установки. Основной инструмент – expand.exe, входящий в состав ОС с Windows XP. Он позволяет извлекать файлы из архива через командную строку с параметрами:
expand source.cab -F:* destination\– распаковка всех файлов в указанную папку;expand source.cab -F:filename.ext destination\– извлечение конкретного файла;expand -D source.cab– просмотр содержимого без распаковки.
Для создания CAB-архивов используется makecab.exe (DDF-файл конфигурации задает параметры сжатия и структуру). Оба инструмента поддерживают форматы LZX, MSZIP и без сжатия.
Для пользователей, предпочитающих графический интерфейс, подойдут сторонние архиваторы с поддержкой CAB:
- 7-Zip – бесплатный, открывает CAB как обычный архив, поддерживает drag-and-drop и контекстное меню Проводника. Версия 23.01+ корректно обрабатывает вложенные папки и длинные пути.
- WinRAR – платный, но с пробным периодом; позволяет редактировать содержимое CAB без полной перепаковки (функция «Добавить в архив»).
- PeaZip – кроссплатформенный, поддерживает 200+ форматов, включая CAB с шифрованием AES-256.
При выборе инструмента учитывайте: системные утилиты работают быстрее за счет прямого обращения к API Windows, а сторонние архиваторы удобнее для массовых операций.
Как распаковать cab архив с помощью встроенных средств системы

Windows содержит утилиту expand.exe, предназначенную для работы с CAB-файлами. Она доступна через командную строку и поддерживает базовые операции: извлечение отдельных файлов или всего архива. Для запуска откройте Командную строку (cmd) или PowerShell с правами администратора, если архив расположен в системной директории.
Основной синтаксис команды:
expand "путь_к_файлу.cab" -F:* "путь_для_распаковки"– извлекает все содержимое архива в указанную папку.expand "путь_к_файлу.cab" -F:имя_файла "путь_для_распаковки"– извлекает только конкретный файл.
Пример: expand "C:\temp\archive.cab" -F:* "C:\output". Если целевая папка не существует, утилита создаст её автоматически. Для просмотра списка файлов в архиве используйте параметр -D без указания пути распаковки.
В Windows 10 и 11 CAB-файлы можно открыть через Проводник без командной строки. Дважды кликните по архиву – система отобразит его содержимое как обычную папку. Перетащите нужные файлы мышью или скопируйте их через контекстное меню. Этот метод удобен для быстрого доступа, но не поддерживает массовое извлечение с фильтрацией по маске.
Для автоматизации процесса используйте PowerShell. Скрипт ниже извлекает все CAB-файлы из текущей директории в отдельные папки:
Get-ChildItem -Filter *.cab | ForEach-Object {
$outputDir = Join-Path -Path $_.DirectoryName -ChildPath $_.BaseName
New-Item -ItemType Directory -Path $outputDir -Force | Out-Null
expand $_.FullName -F:* $outputDir
}
Сохраните код в файл с расширением .ps1 и выполните в PowerShell с правами администратора. Убедитесь, что политика выполнения скриптов разрешена (Set-ExecutionPolicy RemoteSigned).
Ограничения встроенных средств:
- Не поддерживают сжатие в CAB – только извлечение.
expand.exeне работает с многотомными архивами (разделёнными на части).- В Windows 7 и ранее Проводник не отображает содержимое CAB-файлов напрямую – только через командную строку.
Для сложных сценариев (например, восстановление повреждённых архивов) используйте сторонние утилиты, такие как 7-Zip или WinRAR, которые поддерживают дополнительные алгоритмы сжатия и проверку целостности.
Пошаговая инструкция по извлечению файлов через командную строку

1. Запустите командную строку с правами администратора. Нажмите Win + X, выберите «Командная строка (администратор)» или «Windows PowerShell (администратор)». Убедитесь, что путь к файлу .cab не содержит пробелов – при необходимости переименуйте или переместите его в корень диска (например, C:\archive.cab). Введите команду expand для проверки доступности утилиты: если система не распознаёт её, установите пакет Windows ADK или используйте dism.
2. Извлеките все файлы из архива. Введите команду:
expand "C:\путь\к\файлу.cab" -F:* "C:\целевая_папка".
Параметр -F:* указывает на извлечение всех файлов, а кавычки обязательны при наличии пробелов в путях. Для извлечения конкретного файла замените * на его имя, например: -F:setup.exe. Если целевая папка не существует, она будет создана автоматически.
3. Проверьте результат и устраните ошибки. После выполнения команды сверьте содержимое целевой папки с ожидаемым списком файлов. При ошибке «Не удаётся найти указанный файл» проверьте правильность пути к .cab и наличие прав на запись в целевую директорию. Для архивов с цифровой подписью используйте signtool verify /v "файл.cab" перед извлечением, чтобы избежать повреждённых данных.
Использование сторонних программ для открытия cab архивов

Для работы с .cab файлами без встроенных средств Windows подойдут специализированные архиваторы. 7-Zip (версия 23.01 и новее) поддерживает формат нативно, предлагая распаковку через контекстное меню или интерфейс программы. Преимущество – минималистичный дизайн и отсутствие рекламы, но для глубокой интеграции с системой потребуется ручная настройка ассоциаций файлов. Альтернатива – WinRAR (6.23+), который корректно обрабатывает cab-архивы, включая многотомные сборки, но требует лицензии для постоянного использования.
PeaZip (9.8.0) выделяется кроссплатформенностью и поддержкой 200+ форматов, включая .cab. Программа позволяет извлекать содержимое с сохранением структуры папок, проверять контрольные суммы и редактировать архивы без предварительной распаковки. Встроенный файловый менеджер ускоряет работу с большими объемами данных, но интерфейс может показаться перегруженным новичкам. Для Linux-систем File Roller (GNOME) или Ark (KDE) справляются с задачей без дополнительных настроек, но функционал ограничен базовыми операциями.
Если требуется не только распаковка, но и создание cab-файлов, IZArc (4.5) – оптимальный выбор. Программа поддерживает сжатие с алгоритмами LZX и Quantum, характерными для cab-архивов Microsoft, а также конвертацию в другие форматы. Интеграция с проводником Windows позволяет упаковывать файлы в cab прямо из контекстного меню, но интерфейс устарел и не локализован на русский. Для автоматизации процессов подойдет CabPack – утилита командной строки, способная создавать cab-архивы с заданными параметрами сжатия и разбивкой на тома.
При работе с поврежденными cab-файлами PowerArchiver (2023) предлагает инструмент восстановления структуры архива. Программа сканирует битые сектора и пытается извлечь доступные данные, что полезно при ошибках чтения. В платной версии доступна функция предварительного просмотра содержимого без распаковки, но для разовых операций достаточно бесплатной Trial-версии. Для корпоративного использования Total Commander с плагином WCX_CAB обеспечивает быстрый доступ к cab-архивам через двухпанельный интерфейс, но требует ручной установки расширений.
Выбор программы зависит от сценария: для однократной распаковки хватит 7-Zip, для создания архивов – IZArc, а при частых операциях с поврежденными файлами – PowerArchiver. Перед установкой проверяйте совместимость с вашей версией ОС: например, PeaZip на Windows 11 требует прав администратора для полной функциональности, а WinRAR может конфликтовать с встроенными средствами системы при обработке cab-файлов.
Как проверить целостность cab файла перед распаковкой

Перед извлечением данных из CAB-файла критически важно убедиться в его целостности. Поврежденный архив может привести к частичной или полной потере информации, а в случае системных обновлений – к некорректной установке компонентов. Стандартные инструменты Windows и сторонние утилиты позволяют провести проверку без распаковки, используя контрольные суммы и встроенные механизмы валидации.
В Windows интегрирована утилита expand.exe, которая поддерживает проверку целостности CAB-файлов через параметр -r. Команда выглядит так: expand -r файл.cab -f:* NUL. Если архив поврежден, утилита вернет ошибку с кодом, например, 0x8007000D (неверный формат данных) или 0x80004005 (общая ошибка). Этот метод не извлекает файлы, а лишь проверяет структуру архива, что экономит время и ресурсы.
Для более глубокой проверки используйте утилиту makecab.exe с параметром /V (verbose mode). Пример команды: makecab /V файл.cab. Утилита выведет детальный отчет о содержимом, включая контрольные суммы каждого файла. Сравните их с эталонными значениями, если они доступны (например, в документации к дистрибутиву). Расхождение в контрольных суммах указывает на повреждение данных.
Сторонние инструменты, такие как 7-Zip или WinRAR, также поддерживают проверку целостности. В 7-Zip откройте CAB-файл через интерфейс, выделите все элементы и нажмите Тест. Программа проверит CRC32 каждого файла и сообщит о несоответствиях. WinRAR предлагает аналогичную функцию через контекстное меню: Проверить архив. Оба инструмента работают быстрее встроенных утилит Windows и поддерживают дополнительные алгоритмы проверки.
| Метод проверки | Инструмент | Параметры/команда | Тип проверки |
|---|---|---|---|
| Встроенная утилита | expand.exe |
expand -r файл.cab -f:* NUL |
Структурная целостность |
| Детальный анализ | makecab.exe |
makecab /V файл.cab |
Контрольные суммы файлов |
| Сторонний софт | 7-Zip | Контекстное меню → Тест | CRC32 |
| Сторонний софт | WinRAR | Контекстное меню → Проверить архив | CRC32, MD5 (опционально) |
Для автоматизированной проверки в скриптах используйте PowerShell. Пример скрипта для проверки CRC32:
$cabFile = "C:\путь\к\файлу.cab"
$7zipPath = "C:\Program Files\7-Zip\7z.exe"
$output = & $7zipPath t $cabFile
if ($output -match "Everything is Ok") {
Write-Host "Целостность подтверждена"
} else {
Write-Host "Ошибка: $($output | Select-String -Pattern 'Error')" -ForegroundColor Red
}
Если CAB-файл получен из ненадежного источника, дополнительно проверьте его цифровую подпись. В Windows это делается через свойства файла: Правый клик → Свойства → Цифровые подписи. Отсутствие подписи или недействительный сертификат – повод отказаться от распаковки. Для системных CAB-файлов (например, из обновлений Windows) подпись должна соответствовать Microsoft. Проверка подписи исключает риск подмены данных злоумышленниками.
Обработка ошибок при извлечении повреждённых cab архивов

Повреждённые CAB-файлы часто вызывают ошибки с кодами 0x80004005 (неопределённая ошибка) или 0x8007000D (неверный формат данных). Первым шагом диагностики станет проверка контрольной суммы архива через утилиту fciv.exe от Microsoft или сторонние инструменты вроде 7-Zip. Если хеш не совпадает с эталонным, файл считается некорректным, и его восстановление маловероятно без резервной копии.
При попытке извлечения через expand.exe в Windows возникает ошибка ERROR_BAD_COMPRESSION_BUFFER (код 605), если повреждён заголовок архива. В таких случаях попробуйте извлечь данные с помощью cabextract под Linux или WSL – эта утилита игнорирует часть структурных ошибок и может восстановить отдельные файлы. Ключ -f принудительно извлекает содержимое, даже если контрольные суммы не совпадают.
Если архив открывается, но часть файлов недоступна, используйте WinRAR в режиме «Восстановление». Инструмент сканирует архив на предмет повреждённых блоков и пытается реконструировать таблицу файлов. Успех зависит от степени повреждения: при разрушении более 30% метаданных восстановление маловероятно. Альтернатива – Universal Extractor 2, который применяет несколько алгоритмов разархивирования параллельно.
Для CAB-файлов с цифровой подписью проверьте её целостность через signtool verify /v. Если подпись нарушена, Windows блокирует извлечение, даже если данные физически целы. Решение – временно отключить проверку подписей через групповую политику (gpedit.msc) или использовать 7-Zip, который игнорирует подписи при извлечении.
Ошибка ERROR_FILE_CORRUPT (код 1392) указывает на повреждение внутренней структуры архива. Попробуйте извлечь файлы по одному с помощью expand.exe -r, указав конкретное имя файла. Если процесс прерывается на определённом файле, остальные могут быть извлечены успешно. Для автоматизации используйте скрипт PowerShell с обработкой исключений через try-catch.
При работе с CAB-архивами, созданными makecab.exe, повреждение может быть вызвано неверными параметрами сжатия. Попробуйте пересоздать архив с другим методом сжатия (LZX:21 вместо MSZIP) или без сжатия вовсе. Если исходные файлы доступны, это единственный надёжный способ получить рабочий архив.
В крайних случаях, когда ни один инструмент не справляется, попробуйте извлечь сырые данные с помощью dd под Linux или HxD в Windows. Найдите сигнатуру MSCF в начале файла и вырежьте блоки между ней и концом архива. Далее используйте binwalk для поиска вложенных файлов – иногда удаётся восстановить часть данных, даже если структура архива разрушена.
Создание собственного cab файла из папки или набора файлов

Для создания CAB-файла в Windows используйте встроенную утилиту makecab.exe, расположенную в папке %WINDIR%\System32\. Она работает через директивный файл (DDF), который определяет параметры архивации. Создайте текстовый файл с расширением .ddf, например, config.ddf, и укажите в нём путь к исходным файлам и настройки сжатия.
Пример минимального DDF-файла для упаковки содержимого папки C:\Project\Files\ в архив output.cab:
.OPTION EXPLICIT .Set Cabinet=ON .Set Compress=ON .Set CabinetFileCountThreshold=0 .Set FolderFileCountThreshold=0 .Set FolderSizeThreshold=0 .Set MaxDiskSize=0 .Set DiskDirectoryTemplate=. .Set CabinetNameTemplate=output.cab "C:\Project\Files\*.*" /inf=no
Ключ /inf=no отключает генерацию файла индекса, что ускоряет процесс.
Запустите команду в командной строке с правами администратора:
makecab.exe /F config.ddf. Утилита создаст CAB-файл в текущей директории. Если требуется упаковать файлы с сохранением структуры папок, добавьте в DDF-файл строку .Set Cabinet=ON и перечислите пути с относительными именами, например, "C:\Project\Files\subfolder\file.txt".
Для сжатия с максимальной степенью используйте параметр .Set CompressionType=LZX и укажите уровень сжатия от 15 до 21: .Set CompressionMemory=21. Это замедлит процесс, но уменьшит размер итогового файла на 10–30% по сравнению со стандартными настройками. Уровень 21 рекомендуется для текстовых файлов и библиотек DLL.
Если необходимо упаковать файлы с атрибутами «только для чтения» или «скрытый», добавьте в DDF-файл строку .Set RptFileName=NUL – это подавит предупреждения об атрибутах. Для многотомных архивов задайте размер тома в байтах: .Set MaxDiskSize=10485760 (10 МБ). Тома будут именоваться как output.1.cab, output.2.cab и т. д.
В PowerShell создание CAB-файла можно автоматизировать с помощью скрипта. Пример функции для упаковки папки:
function New-CabFile {
param([string]$SourcePath, [string]$OutputCab)
$ddfContent = @"
.OPTION EXPLICIT
.Set Cabinet=ON
.Set Compress=ON
.Set CabinetNameTemplate=$OutputCab
"$SourcePath\*.*" /inf=no
"@
$ddfContent | Out-File -FilePath "temp.ddf" -Encoding ASCII
& "$env:WINDIR\System32\makecab.exe" /F "temp.ddf"
Remove-Item "temp.ddf"
}
New-CabFile -SourcePath "C:\Project\Files" -OutputCab "archive.cab"
Скрипт генерирует временный DDF-файл и удаляет его после выполнения.
Для интеграции в сценарии сборки (например, в MSBuild) используйте задачу MakeCab из пакета Microsoft.Build.Tasks. Пример конфигурации в файле проекта:
<UsingTask TaskName="MakeCab" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" /> <Target Name="BuildCab"> <MakeCab CabinetFileName="output.cab" SourceFiles="@(FilesToCompress)" DiskDirectoryTemplate="." CompressionType="LZX" CompressionMemory="21" /> </Target>
Задайте список файлов в элементе FilesToCompress с указанием путей.
При работе с большими объёмами данных (>1 ГБ) разделите процесс на этапы: сначала создайте DDF-файл с перечислением всех файлов, затем запустите makecab.exe с параметром /L для логирования в файл. Это позволит отследить ошибки упаковки отдельных файлов. Для оптимизации скорости исключите из архива временные файлы (например, *.tmp, *.log) через маски в DDF.
Проверьте целостность созданного CAB-файла с помощью утилиты expand.exe:
expand.exe -F:* output.cab C:\Temp\Extracted\. Если файлы извлекаются без ошибок, архив корректен. Для программного доступа к содержимому используйте библиотеку Cabinet.dll или классы System.IO.Compression в .NET (начиная с версии 4.5), но учтите, что они не поддерживают все возможности формата CAB.
