Используя SharpZipLib , работает следующий код. Под работами я подразумеваю entry.IsCrypted
, возвращает значение true или false в зависимости от того, существует ли пароль для первой записи в файле zip.
var file = @"c:\testfile.zip";
FileStream fileStreamIn = new FileStream(file, FileMode.Open, FileAccess.Read);
ZipInputStream zipInStream = new ZipInputStream(fileStreamIn);
ZipEntry entry = zipInStream.GetNextEntry();
Console.WriteLine("IsCrypted: " + entry.IsCrypted);
Существует простое руководство по использованию SharpZipLib на CodeProject .
Таким образом, простая реализация выглядит примерно так:
public static bool IsPasswordProtectedZipFile(string path)
{
using (FileStream fileStreamIn = new FileStream(path, FileMode.Open, FileAccess.Read))
using (ZipInputStream zipInStream = new ZipInputStream(fileStreamIn))
{
ZipEntry entry = zipInStream.GetNextEntry();
return entry.IsCrypted;
}
}
Обратите внимание, что нет реальной обработки ошибок или чего-то еще ...