Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата torisazu:
А для способа который описан у вас на сайте нужен файл lp.cab но я не могу его заполучить. Нашел на одном сайте что нужно скачать exe файл для установки нужного языка и запускаешь файл и в папке где exe должен появится файл lp.cab на пару секунд и быстро надо его скопировать в другое место, но дело в том что он так быстро исчезает что при копировании выдает ошибку Этот файл уже не существует. »
Код на PowerShell, который позволит получить cab-файл из sfx-cab-архива, коим является инсталляция указанного языкового пакета:
Скрытый текст
Код: Выделить весь код
$sSourceFile = 'C:\Мои проекты\0217\windows6.1-kb2483139-x64-ru-ru_0587eb296a2f04e0d3699650d39b53ee18b97a79.exe'
$sDestFile   = 'lp.cab'

if([System.IO.File]::Exists($sSourceFile)) {
    $aSourceBytes = [System.IO.File]::ReadAllBytes($sSourceFile)

    $bFound = $false

    for([int]$i = $aSourceBytes.GetLowerBound(0); $i -le $aSourceBytes.GetUpperBound(0) - 3; $i++) {
        if($aSourceBytes[$i] -eq 0x4D -and $aSourceBytes[$i + 1] -eq 0x53 -and $aSourceBytes[$i + 2] -eq 0x43 -and $aSourceBytes[$i + 3] -eq 0x46) {
            $aDestBytes = [byte[]]::new($aSourceBytes.Length - $i)
            [System.Array]::Copy($aSourceBytes, $i, [byte[]]$aDestBytes, 0, $aSourceBytes.GetUpperBound(0) - $i)
            [System.IO.File]::WriteAllBytes([System.IO.Path]::Combine([System.IO.Path]::GetDirectoryName($sSourceFile), $sDestFile), $aDestBytes)

            $bFound = $true
            break
        }
    }

    if($bFound) {
        Write-Host "Cab signature found in source file [$sSourceFile]. Cab archive extracted as [lp.cab]." -ForegroundColor Green
    } else {
        Write-Host "Can't find cab signature in source file [$sSourceFile]." -ForegroundColor Red
    }
} else {
    Write-Host "Can't find source file [$sSourceFile]." -ForegroundColor Red
}
Поскольку sfx-cab представляет собой банальное бинарное совмещение двух файлов (Microsoft Cabinet Format):
Цитата:
Код: Выделить весь код
copy /b extract.exe+self1.cab self.exe  ; self.exe is self-extracting
— читаем содержимое исполняемого файла в байтовый массив и тупо ищем в нём сигнатуру cab-архива. Если находим — определяем смещение, копируем остаток байтового массива в новый массив, сохраняем этот новый массив в файл под именем lp.cab.

Я не стал выпендриваться, посему просто подставьте вместо выделенного свой путь к загруженному файлу инсталляции языкового пакета.

Последний раз редактировалось Iska, 16-11-2018 в 19:22.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:16, 16-11-2018 | #3