c#在内存中解压缩.exe文件
本文关键字:exe 文件 解压缩 内存 | 更新日期: 2023-09-27 18:03:49
经过一番研究(大约1天),我意识到我需要一些帮助。
我要解决的问题:
我正在尝试解压缩.exe
文件,但我无法将结果写入磁盘(这是一个约束)。
我需要在内存中保持这一个,例如在Stream
类甚至字符串类。
来完成我的问题:
- 我不知道是用哪个工具生成的
- 。. Net Framework 4.5
我尝试了什么:
-
我使用
Process
类,但有一个验证步骤,我想在后台做 -
我尝试探索GZip/ZipFile类,但这是一个失败
谢谢你的回答
如果您可以在。net Framework 4.5或更高版本上构建,请使用System.IO.Compression
中的类(请记住在项目级别添加对System.IO.Compression
和System.IO.Compression.FileSystem
的引用):
using System.IO.Compression;
using System.IO;
public static string GetTextfileFromZip(string zipFilepath, string txtFilename)
{
using (ZipArchive zipArchive = ZipFile.Open(zipFilepath, ZipArchiveMode.Read))
{
ZipArchiveEntry entry = GetZipArchiveEntry(zipArchive, txtFilename);
using (Stream stream = entry.Open())
{
using (StreamReader reader = new StreamReader(stream))
{
return reader.ReadToEnd();
}
}
}
}
public static ZipArchiveEntry GetZipArchiveEntry(ZipArchive zipArchive, string zipEntryName)
{
return zipArchive.Entries.First<ZipArchiveEntry>(n => n.FullName.Equals(zipEntryName));
}
注意:如果你的存档是一个自解压存档与。exe扩展名,这仍然会工作。只需将exe的完整路径传递给函数。第二个参数是存档中文本文件的名称/路径。因此,如果文本文件在存档根目录下,它将只是例如。"file.txt",否则,如果它位于名为sub
的文件夹中,则参数应为@"sub'file.txt"
这是更简单的方法
using System;
using System.IO.Compression;
namespace zipReader
{
class Program
{
static void Main(string[] args)
{
ZipFile.ExtractToDirectory("C:''Temp''D20190827.exe", "C:''Temp''");
Console.WriteLine("Extract Done!");
}
}
}