web-dev-qa-db-ja.com

DotNetZipを使用してZipファイルにパスワードを設定する

DotNetZip を使用してファイルを圧縮していますが、パスワードをZipに設定する必要があります。

私が試しました:

public void Zip(string path, string outputPath)
    {
        using (ZipFile Zip = new ZipFile())
        {
            Zip.AddDirectory(path);
            Zip.Password = "password";
            Zip.Save(outputPath);
        }
    }

ただし、出力Zipにはパスワードがありません。

パラメーターpathには、例のサブフォルダーがあります:path = c:\path\と内部パスにはsubfolderがあります

なにが問題ですか?

18
Jean Carlos

追加されたエントリのみafterPasswordプロパティが設定されている場合、パスワードが適用されます。追加するディレクトリを保護するには、AddDirectoryを呼び出す前にパスワードを設定するだけです。

using (ZipFile Zip = new ZipFile())
{
    Zip.Password = "password";
    Zip.AddDirectory(path);
    Zip.Save(outputPath);
}

これは、ZipファイルのパスワードがZipファイル自体ではなく、Zipファイル内のエントリに割り当てられるためです。これにより、Zipファイルの一部を保護でき、一部は保護できません。

using (ZipFile Zip = new ZipFile())
{
    //this won't be password protected
    Zip.AddDirectory(unprotectedPath);
    Zip.Password = "password";
    //...but this will be password protected
    Zip.AddDirectory(path);
    Zip.Save(outputPath);
}
31
petelids