7

exeファイルを抽出したい。exeファイルにはいくつかのファイルとフォルダが含まれています。winrarを使用してファイルを抽出しようとすると抽出されますが、いくつかの例を使用してexeファイルを抽出しようとすると、次のエラーが発生します。

GZipヘッダーのマジックナンバーが正しくありません。GZipストリームを渡していることを確認してください。

私はいくつかのサンプルを使用し、問題のためにたくさんグーグルで検索しましたが、答えが得られませんでした。また、いくつかのライブラリも使用しました。

私はこのコードを使用しましたが、同じエラーが発生しました:

    public static void Decompress(FileInfo fi)
    {
        // Get the stream of the source file.
        using (FileStream inFile = fi.OpenRead())
        {
            // Get original file extension, for example
            // "doc" from report.doc.gz.
            string curFile = fi.FullName;
            string origName = curFile.Remove(curFile.Length -
                    fi.Extension.Length);

            //Create the decompressed file.
            using (FileStream outFile = File.Create(origName))
            {
                using (GZipStream Decompress = new GZipStream(inFile,
                        CompressionMode.Decompress))
                {
                    // Copy the decompression stream 
                    // into the output file.
                    Decompress.CopyTo(outFile);

                    Console.WriteLine("Decompressed: {0}", fi.Name);

                }
            }
        }
    }
4

1 に答える 1

4

これは、.exeファイルが自己解凍型アーカイブであるためです...

DotNetZipを試してみてください。プロジェクトのFAQから:

このライブラリは自己解凍型のzipファイルを読み取りますか?

はい。DotNetZipは、WinZipによって生成された自己解凍アーカイブ(SFX)を読み取ることができ、WinZipは、DotNetZipによって生成されたSFXファイルを読み取ることができます。

Nugetから簡単にインストールできます。

于 2012-10-29T10:49:03.513 に答える