我想提取一个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安装它。