GZIP标头中的魔术数字不正确.确保您正在通过GZIP流中传递.(.exe文件)



我想提取一个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);
                }
            }
        }
    }

那是因为 .exe文件是自我提取的存档...

您应该尝试一下Dotnetzip。从项目的常见问题解答:

此库是否读取自提取zip文件?

是。Dotnetzip可以阅读Winzip生成的自提取档案(SFX)和Winzip 可以读取Dotnetzip生成的SFX文件。

您可以轻松地从Nuget安装它。

相关内容

  • 没有找到相关文章

最新更新