7

我想提取一个exe文件。exe 文件包含一些文件和文件夹。当我尝试使用 winrar 提取文件时,它会被提取,但是当我尝试使用一些示例提取 exe 文件时,我收到此错误:

GZip 标头中的幻数不正确。确保您传入的是 GZip 流。

我使用了一些示例并在 Google 上搜索了很多我的问题,但没有得到我的答案,而且我也使用了一些库。

我使用了这段代码,但同样的错误:

    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。从项目的常见问题解答:

这个库是否读取自解压 zip 文件?

是的。DotNetZip 可以读取 WinZip 生成的自解压文件 (SFX),WinZip 可以读取 DotNetZip 生成的 SFX 文件。

您可以轻松地从 Nuget 安装它

于 2012-10-29T10:49:03.513 回答