使用DOTNETZIP库,我目前可以使用以下代码解压缩/.ZIP文件:
private void Unzip(object sender, EventArgs e)
{
string zipPath = pub.DepoDirDaily + @"\";
string unzipPath = pub.DepoDirDaily + @"\";
DirectoryInfo efaFiles = new DirectoryInfo(zipPath);
foreach (var file in efaFiles.GetFiles("*.exe*"))
{
if (file.ToString().Contains(pub.YYYMMDD_t0) && file.ToString().Contains(".exe"))
{
try
{
String FileName = file.ToString().Replace(zipPath, "");
String FileNameClean = FileName.Replace(".exe", "");
String OutputDir = unzipPath + FileNameClean;
String InputDir = zipPath + file;
ExtractFileToDirectory(InputDir, OutputDir, "password1");
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}
}
public void ExtractFileToDirectory(string existingZipFile, string outputDirectory, string Password)
{
try
{
ZipFile zip = ZipFile.Read(existingZipFile);
Directory.CreateDirectory(outputDirectory);
foreach (ZipEntry e in zip)
{
e.Password = Password;
e.Extract(outputDirectory);
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
但是,当尝试解压缩.EXE文件时,出现以下错误:
Ionic.Zip.ZipException:无法将其读取为ZipFile ---> Ionic.Zip.BadReadException:位置0x00000000处的错误签名(0x00505A4D)
我作了进一步研究,看来DOTNETZIP无法处理.EXE文件,因此这确实有意义。我尝试将扩展名重命名为.ZIP并尝试解压缩,但不幸的是,它出现了相同的错误。
看起来可以使用7ZIP库进行提取,但是我正在努力地在网上找到任何合适的示例,而我所做的却不包括可能包含密码的内容,因此没有用
有人对我有帮助吗? 无论是使用其他库,解决方法还是帮助您理解7ZIP库,都将不胜感激!
谢谢!
答案 0 :(得分:0)
.exe文件不是zip文件,而是portable executable文件。看看Parsing plain Win32 PE File (Exe/DLL) in .NET中关于可以将文件解析为某种预处理形式的库的建议,或者您可以将其阅读为二进制文件并提取所需的字段。