zipフォルダーがパスワードでロックされていないのに、内部のファイルがロックされているのはなぜですか?

Aug 19 2020

zipフォルダにパスワードを設定しようとして数時間苦労しています。ただし、さまざまなコードを何度も試しても、パスワードはzipフォルダー内の各ファイルに適用されるため、それは私が望んでいることではありません。フォルダ自体にパスワードを適用したいだけで、内部の個々のファイルにパスワードを設定しないでください。

これが私のコードです:(参考までに、私はDotNetZipを使用しています)

//Assume that there is a folder with multiple files in it at C:\\ExampleFolder
using (Ionic.Zip.ZipFile z = Ionic.Zip.ZipFile())
{
    z.Password = "MyPassword";            //Setting the password
    z.AddDirectory(@"C:\\ExampleFolder"); //I thought the directory added here should be pw-protected
    z.Save(@"C:\\FinalResult.zip");       //Create the pw-protected zip folder
}

ただし、このプログラムを実行するとFinalResult.zip、という名前のzipフォルダーが作成されますが、そのzipフォルダーはパスワードで保護されていません。そのzipフォルダー内のすべてのファイルはパスワードで保護されています。この場合、ユーザーは内部のファイルを開こうとするたびにパスワードを入力する必要があり、これは一種の不便です。ユーザーがzipフォルダーを開こうとしたときに、パスワードを1回だけ入力する必要があります。このコードが私が達成したいことをしない理由を誰かに教えてもらえますか?

回答

2 vvvv4d Aug 19 2020 at 03:36

パスワードは実際には正しく機能しています。

zipアーカイブを作成する場合、このパスワードはzipアーカイブ自体ではなく、エントリに適用されます。これは、AddFile、AddDirectory、AddEntry、またはPASSWORDメソッドなどのいずれかを使用してZipFileに後で追加されるすべてのZipEntryに適用されます。zipアーカイブを読み取る場合、このプロパティは、Extractメソッドの1つを使用してZipFileから後で抽出されるすべてのエントリに適用されます。 ZipFileクラスで。

PasswordDotNetZipのドキュメントの備考セクションを参照してください

https://documentation.help/DotNetZip/4444d7a5-3324-8af9-3ed3-5bf6551d3cd1.htm