可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I need use 7zip in C#. Without console, just with 7zSharp.dll ? + I find some data here
http://7zsharp.codeplex.com/releases/view/10305 ,
but I don't know how to use it( - I could create .bat(.cmd) file, but I need throught dll file) Exactly: I need extract .7z file with key)
回答1:
Download the standalone console version from 7zip.com and add it to your project.
You need those 3 Files added in the project:
- 7za.exe
- 7za.dll
- 7zxa.dll
Don't forget to say Copy to Output Directory in it's preferences.
Extract an archive:
public void ExtractFile(string sourceArchive, string destination) { string zPath = "7za.exe"; //add to proj and set CopyToOuputDir try { ProcessStartInfo pro = new ProcessStartInfo(); pro.WindowStyle = ProcessWindowStyle.Hidden; pro.FileName = zPath; pro.Arguments = string.Format("x \"{0}\" -y -o\"{1}\"", sourceArchive, destination); Process x = Process.Start(pro); x.WaitForExit(); } catch (System.Exception Ex) { //handle error } }
Create an archive:
public void CreateZip(string sourceName, string targetArchive) { ProcessStartInfo p = new ProcessStartInfo(); p.FileName = "7za.exe"; p.Arguments = string.Format("a -tgzip \"{0}\" \"{1}\" -mx=9", targetArchive, sourceName); p.WindowStyle = ProcessWindowStyle.Hidden; Process x = Process.Start(p); x.WaitForExit(); }
回答2:
The authors of 7zip provide the LZMA SDK and good documentation which should be able to achieve what you want. The SDK includes C# code capable of compression / decompression.
Another option would be to use a something like C# (.NET) Interface for 7-Zip Archive DLLs
UPDATE: Another user asked a similar question here: How do I create 7-Zip archives with .NET? The answer has several of the same links I provided and a few more.
回答3:
It doesn't look like this library supports encrypted files. No method takes a key as a parameter.
回答4:
The 7zSharp library doesn't seem to support password as input, just a zip file.
The library just calls the .exe of 7zip, so you could donwload the source and alter it to accept a password parameter which you then pass to the executable.