Introdução
No artigo de hoje vou mostrar como fazer o 7zip se tornar seu “amigo” na hora de criptografar e descriptografar arquivos com ou sem senhas dentro de uma aplicação .NET, de maneira bastante rápida e descomplicada.
Aplicação
Primeiramente vamos criar uma aplicação Console Application (File > New > Project), conforme na figura 1, abaixo:

Feito isso, vamos criar três pastas no nosso projeto com os nomes 7zip (que vai conter o executável do 7zip), ToZip (que vai conter os arquivos a serem compactados) e ToUnzip (com os arquivos a serem descompactados), conforme a figura abaixo:

Agora chega de configuração e vamos para a melhor parte do artigo: show me the code! (Código comentado para melhor entendimento).
class Program
{
private static void ZipFile(string file, string outPath)
{
//Classe utilizada para se iniciar um processo no windows.
ProcessStartInfo process = new ProcessStartInfo();
//Define qual aplicação será executado.
process.FileName = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\7zip\7z.exe"));
//Define os argumentos que serão utilizados pela aplicação definida no FileName, no caso abaixo o "a" define que será uma compactação e o "-p" a senha que será necessária para descompactar futuramente.
process.Arguments = quot;a \"{Path.GetFileNameWithoutExtension(file)}\" \"{file}\" \"-piMasters\"";
//Define o diretório de trabalho.
process.WorkingDirectory = outPath;
//Define se o shell do sistema deve ser executado.
process.UseShellExecute = false;
//Define se o processo deve ser executado em uma nova janela.
process.CreateNoWindow = true;
//Inicia-se o processo.
var zipFile = Process.Start(process);
//Aguarda o encerramento do processo iniciado.
zipFile.WaitForExit();
//Apaga o arquivo que acabou de ser zipado.
File.Delete(file);
}
private static void UnzipFile(string file, string outPath)
{
//Classe utilizada para se iniciar um processo no windows.
ProcessStartInfo process = new ProcessStartInfo();
//Define qual aplicação será executado.
process.FileName = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\7zip\7z.exe"));
//Define os argumentos que serão utilizados pela aplicação definida no FileName, no caso abaixo o "x" define que será uma descompactação e o "-p" a senha para que isso seja possível".
process.Arguments = quot;x \"{file}\" \"-piMasters\"";
//Define o diretório de trabalho.
process.WorkingDirectory = outPath;
// Define se o shell do sistema deve ser executado.
process.UseShellExecute = false;
//Define se o processo deve ser executado em uma nova janela.
process.CreateNoWindow = true;
//Inicia-se o processo.
var unzipFile = Process.Start(process);
//Aguarda o encerramento do processo iniciado.
unzipFile.WaitForExit();
//Apaga o arquivo que acabou de ser zipado.
File.Delete(file);
}
static void Main(string[] args)
{
//Localiza-se a pasta para descompactar os arquivos .7z.
var pathToUnzip = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\ToUnzip"));
//Localiza-se a pasta para compactar seus arquivos.
var pathToZip = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\ToZip"));
//Array com todos os arquivos que seram compactados.
var fileNameToZip = Directory.GetFiles(pathToZip);
foreach (var file in fileNameToZip)
{
ZipFile(file, pathToUnzip);
}
//Array com todos os arquivos que seram descompactados.
var fileNameToUnzip = Directory.GetFiles(pathToUnzip);
foreach (var file in fileNameToUnzip)
{
UnzipFile(file, pathToZip);
}
}
}
Agora vamos para o último passo da nossa aplicação, que é colocar o executável do 7zip na nossa aplicação.
7zip
Primeiramente, caso você não tenha o 7zip instalado. baixe-o através do link https://www.7-zip.org/download.html e após finalizar a instalação, abra a pasta onde ele foi instalado (provavelmente em C:\Program Files\7-Zip) e em seguida copie o arquivo 7z.exe e cole dentro da pasta 7zip do nosso projeto.
Feito isso, vamos rodar o projeto e você poderá observar que todos os arquivos que você colocar na pasta ToZip serão compactados, e em seguida, jogados para a pasta ToUnzip, que por sua vez serão descompactados e jogados novamente na pasta ToZip.
Caso queiram baixar a aplicação, ela estará disponível no meu GitHub através do link:
Espero que tenham gostado do artigo e até a próxima!
Obrigado.




