我正在尝试使用Rebex库创建受密码保护的zip文件。
这是我使用的代码
using (ZipArchive zip = new ZipArchive(ZipFilePath, ArchiveOpenMode.Create))
{
// Set the Password first
zip.Password = strUserPIN;
// Change the default Encryption algorithm
zip.EncryptionAlgorithm = EncryptionAlgorithm.Aes256;
// Add the file to newly created "files" folder within the zip file
zip.AddFile(Temp_BPI_SaveLocation + strDataFilewithTimeStamp, @"\files\");
//Save the Zip file
zip.Save();
// cloase the zip file
zip.Close();
}
但是,当我尝试打开文件时,没有得到预期的“需要密码”对话框。
相反,我收到错误消息,提示“ Windows无法完成提取。无法创建目标文件'
我确实需要获得预期的“需要密码”对话框,以便我可以正确提取文件
有没有人处理过这个问题并找到了解决方案?
答案 0 :(得分:2)
更新:
客户端使用Windows操作系统内置的ZIP提取程序来提取生成的ZIP存档。不幸的是,Windows OS提取程序无法进行AES
加密,这导致了所提到的错误。可以在Rebex forum上找到更多详细信息和可能的解决方案。
错误“ Windows无法完成提取。无法创建目标文件”,表示文件名包含当前平台的某些无效字符。在示例代码中,您使用strDataFilewithTimeStamp
作为文件名参数,该参数可能包含冒号':',这在Windows中对于文件名是无效字符。
在这种情况下(密码对话框或错误)将取决于提取器。
要解决此问题,请确保文件名在Windows上不包含任何无效字符(请在Windows平台上检查System.IO.Path.GetInvalidFileNameChars()
方法)。
答案 1 :(得分:0)