0

多くの圧縮ファイルを挿入しているc#で小さなユーティリティを開発しています。これらのファイルはさまざまな拡張子 (.zip、.rar、.tar、.uue など) になっています。これらのファイルを抽出するのではなく、これらのファイルがパスワードで保護されているかどうかを確認したいだけです。

拡張子が .zip のファイルには DotNetZip.dll を使用しましたが、正常に動作しています。.rar ファイル用の Chilkat dll が見つかりました。

他の拡張子用の他の dll や、すべての圧縮ファイル用のより良いソリューションを提供してくれる人はいますか? 前もって感謝します。

4

1 に答える 1

1

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 ファイルであることを検証する方法

于 2016-07-22T07:01:03.187 に答える