SharpZipLib を使用すると、次のコードが機能します。そして作品とは、zip ファイルの最初のエントリのパスワードがあるかどうかに基づいて、entry.IsCrypted が true または false を返すことを意味します。
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);
CodeProject で SharpZipLib を使用する簡単なチュートリアルがあります。
したがって、単純な実装は次のようになります。
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;
}
}
実際のエラー処理などはないことに注意してください...
ref: C# を使用して、ファイルがパスワードで保護された ZIP ファイルであることを検証する方法