Сначала находишь путь до Zip или Rar архиватора установленного в системе Windows namespace ZipEx { using Microsoft.Win32; public static class RegZipPath { /// <summary> /// Метод для поиска установленного WinRAR архиватора в системе через реестр /// </summary> /// <returns>Путь к <b>.exe</b> архиватору</returns> public static string FindWinRar() { string result = string.Empty; try { const string REGPATH = @"WinRAR\Shell\Open\Command"; using RegistryKey Root = Registry.ClassesRoot.OpenSubKey(REGPATH); string winrarPath = (Root?.GetValue(""))?.ToString(); winrarPath = winrarPath.Substring(1, winrarPath.Length - 7); result = winrarPath; } catch { } return result; } /// <summary> /// Метод для поиска установленного 7-Zip архиватора в системе через реестр /// </summary> /// <returns>Путь к <b>.exe</b> архиватору</returns> public static string FindWinZip() { string result = string.Empty; try { const string REGPATH = @"Software\7-Zip"; using RegistryKey zip = Registry.CurrentUser.OpenSubKey(REGPATH); result = string.Concat((zip?.GetValue("Path"))?.ToString(), "7z.exe"); } catch { } return result; } } } Код namespace ZipEx { using Microsoft.Win32; public static class RegZipPath { /// <summary> /// Метод для поиска установленного WinRAR архиватора в системе через реестр /// </summary> /// <returns>Путь к <b>.exe</b> архиватору</returns> public static string FindWinRar() { string result = string.Empty; try { const string REGPATH = @"WinRAR\Shell\Open\Command"; using RegistryKey Root = Registry.ClassesRoot.OpenSubKey(REGPATH); string winrarPath = (Root?.GetValue(""))?.ToString(); winrarPath = winrarPath.Substring(1, winrarPath.Length - 7); result = winrarPath; } catch { } return result; } /// <summary> /// Метод для поиска установленного 7-Zip архиватора в системе через реестр /// </summary> /// <returns>Путь к <b>.exe</b> архиватору</returns> public static string FindWinZip() { string result = string.Empty; try { const string REGPATH = @"Software\7-Zip"; using RegistryKey zip = Registry.CurrentUser.OpenSubKey(REGPATH); result = string.Concat((zip?.GetValue("Path"))?.ToString(), "7z.exe"); } catch { } return result; } } } Потом записываем метод который распаковывает архив через стандартный архиватор Windows namespace ZipEx { using System.Diagnostics; using System.IO; public static class ArchCmd { /// <summary> /// Метод для распаковки .zip архива /// </summary> /// <param name="zipshell">Путь к архиватору</param> /// <param name="inputzip">Путь к архиву который нужно разархивировать</param> /// <param name="outputdir">Выходной путь, куда сохранять папку</param> public static void UnpackZip(string zipshell, string inputzip, string outputdir) { if (File.Exists(zipshell) && (!string.IsNullOrWhiteSpace(inputzip) || !string.IsNullOrWhiteSpace(outputdir))) { var pro = new ProcessStartInfo { WindowStyle = ProcessWindowStyle.Hidden, FileName = zipshell, Arguments = $"x {inputzip}.zip -o{outputdir}" // тут доп аргумент который принимает пароль, добавишь сам. }; using var x = Process.Start(pro); x.WaitForExit(); } } } } Код namespace ZipEx { using System.Diagnostics; using System.IO; public static class ArchCmd { /// <summary> /// Метод для распаковки .zip архива /// </summary> /// <param name="zipshell">Путь к архиватору</param> /// <param name="inputzip">Путь к архиву который нужно разархивировать</param> /// <param name="outputdir">Выходной путь, куда сохранять папку</param> public static void UnpackZip(string zipshell, string inputzip, string outputdir) { if (File.Exists(zipshell) && (!string.IsNullOrWhiteSpace(inputzip) || !string.IsNullOrWhiteSpace(outputdir))) { var pro = new ProcessStartInfo { WindowStyle = ProcessWindowStyle.Hidden, FileName = zipshell, Arguments = $"x {inputzip}.zip -o{outputdir}" // тут доп аргумент который принимает пароль, добавишь сам. }; using var x = Process.Start(pro); x.WaitForExit(); } } } } Затем разархивируешь методом архив и запускаешь файл из папки через Process.Start("Путь к файлу из папки"); Код Process.Start("Путь к файлу из папки");
@CoderVir, чтобы ты спросил.. ТС сам разберётся что ему использовать, я же предложил стандартный способ без использования сторонних библиотек.
r3xq1, ага норм вариант (у меня уведы были выключены только сейчас заметил), знакомая ава кстати и ник.
Бля чел, создовал когда-то тему с += похожим вопросом, ебать столько даунов в коментах, дающих ебанутый ответ