如何通过7zip检查文件是否受密码保护?

时间:2012-01-10 04:46:02

标签: c# command-line 7zip

我使用7zip(命令行)来查看zip / rar / 7z文件。我基本上检查了它有多少文件和扩展名。比...我得到密码保护的文件。当整个文件受密码保护时(所以你不能查看文件名或其中的任何内容)我知道。但是,如果我能看到该文件,我无法判断它们是否受密码保护。我用另一个没有密码将两个文件压缩成一个。 7z l filename.zip显示两个文件中的文件相同

如何使用7zip检测存档中的文件是否受密码保护?

3 个答案:

答案 0 :(得分:1)

对于.7z存档 - 使用垃圾密码测试时,如果存在密码,则设置非零错误级别。

7z t -pxoxoxoxoxoxoxo archive.7z >nul 2>nul
if errorlevel 1 echo Password exists

答案 1 :(得分:0)

使用sevenzipsharp。它没有真正记录,但不难理解。

SevenZipExtractor.SetLibraryPath(@"path\7-Zip\7z.dll");
using (var extractor = new SevenZipExtractor(fn1))
{
        if(extractor.Check()) { //is not password protected

答案 2 :(得分:0)

static bool IsPasswordProtected(string filename)
{
    string _7z = @"C:\Program Files\7-Zip\7z.exe";

    bool result = false;
    using (Process p = new Process())
    {
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.RedirectStandardError = true;
        p.StartInfo.FileName = _7z;
        p.StartInfo.Arguments = $"l -slt \"{filename}\"";
        p.Start();
        string stdout = p.StandardOutput.ReadToEnd();
        string stderr = p.StandardError.ReadToEnd();
        p.WaitForExit();

        if (stdout.Contains("Encrypted = +"))
        {
            result = true;
        }                
    }

    return result;
}