Извлечение из защищенных паролем Zip-файлов

Это мое требование, мне нужно извлекать файлы из заархивированных файлов, защищенных паролем. Я хотел бы знать, доступны ли какие-либо фрагменты кода. Я использую SSIS для загрузки этих заархивированных файлов с FTP. Есть ли последнее обновление фреймворка 4.5, которое я могу использовать?

Обновление:

Теперь я сослался на файл и попробовал пример, но теперь я получаю исключение, я даже пытался добавить точку останова в свою задачу сценария, но все же то, что я получаю, является только исключением.

Исключение:

   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
   at Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()

Снимок: введите описание изображения здесь

Код:

try
    {
            string zipfilePath = @"C:\ZipFiles";
            string zipPassword = "qwerty";
        using (ZipFile zip = new ZipFile())
        {
            zip.Password = zipPassword;
            zip.AddFile("File-01.txt");
            zip.AddFile("File-02.txt");
            zip.AddFile("File-03.txt");
            zip.AddFile("File-04.txt");
            zip.Save(zipfilePath + "AllFiles.zip");
        }
    }
    catch (Exception e)
    {
        MessageBox.Show(e.ToString());
    }

PS: я новичок в C #


person Prakazz    schedule 17.02.2015    source источник
comment
Не могли бы вы предоставить полное исключение, в частности сообщение, связанное с этой ошибкой, а также любые внутренние исключения?   -  person AHowgego    schedule 18.02.2015
comment
Как я уже сказал, я попытался установить точку останова внутри кода, но она даже не переходит к этой строке, все, что я получаю, - это исключение.   -  person Prakazz    schedule 18.02.2015
comment
... Так возникает ли исключение при вызове API DotNetZip? Очень сложно понять, что происходит, не видя кода, но похоже, что у вас могут быть другие проблемы.   -  person AHowgego    schedule 18.02.2015
comment
Хорошо. Также предоставлю код !!   -  person Prakazz    schedule 18.02.2015
comment
Хорошо, ваша проблема кажется внешней по отношению к предмету нашего обсуждения здесь, я считаю, что библиотека ведет себя так, как задумано. После быстрого поиска в Google вы можете проверить цепочку сообщений здесь. На первый взгляд кажется, что у некоторых других людей была очень похожая проблема с использованием SSIS. Если после решения проблемы у вас все еще возникают проблемы, дайте мне знать   -  person AHowgego    schedule 18.02.2015
comment
Обнаружил проблему с этим, как я уже сказал ранее, это также должно быть зарегистрировано в GAC, чтобы его можно было вызвать из SSIS.   -  person Prakazz    schedule 19.02.2015


Ответы (1)


DotNetZip поддерживает защиту паролем. Он доступен в виде пакета NuGet и позволяет извлекать из защищенного паролем zip-файла следующим образом (взято и изменено по ссылке):

string baseDirectory = "C:\\output";
string password = "password";

using (ZipFile zip = ZipFile.Read("MyArchive.zip"))
{
    ZipEntry e = zip["MyFile.txt"];
    e.ExtractWithPassword(baseDirectory, password);
}

Есть много других подобных «фрагментов кода» на странице с примерами C #, которую я вам связал.

person AHowgego    schedule 17.02.2015
comment
Я скачал zip и добавил как ссылку !! Но я получаю исключение, так следует ли регистрировать эту сборку в GAC? - person Prakazz; 18.02.2015
comment
Нет, это не сборка GAC, это сторонний пакет. В консоли диспетчера пакетов запустите Install-Package DotNetZip, а затем добавьте ссылку в свой проект на Ionic.Zip. Что говорит ваше исключение? - person AHowgego; 18.02.2015
comment
Установка сделана. По-прежнему возникает та же проблема. Редактирую вопрос за исключением. - person Prakazz; 18.02.2015