c # UnauthorizedAccessException cuando se usa ZipArchive pero no ZipFile

Puedo comprimir archivos de una carpeta específica usandoZipFile.CreateFromDirectory en el siguiente código de prueba (solo usé este código para probar cómo funciona la compresión):

// Where the files are located
string strStartPath = txtTargetFolder.Text;

// Where the zip file will be placed
string strZipPath = @"C:\Users\smelmo\Desktop\testFinish\" + strFileNameRoot + "_" + txtDateRange1.Text.Replace(@"/", "_") + "_" + txtDateRange2.Text.Replace(@"/", "_") + ".zip";

ZipFile.CreateFromDirectory(strStartPath, strZipPath);

Sin embargo, esto comprime TODOS los contenidos de la carpeta. Estoy tratando de comprimir elementos específicos en la carpeta usandoZipArchive en el siguiente código:

// Where the files are located
string strStartPath = txtTargetFolder.Text;

// Where the zip file will be placed
string strZipPath = @"C:\Users\smelmo\Desktop\testFinish\" + strFileNameRoot + "_" + txtDateRange1.Text.Replace(@"/", "_") + "_" + txtDateRange2.Text.Replace(@"/", "_") + ".zip";

using (ZipArchive archive = ZipFile.OpenRead(strStartPath))
{
    foreach (ZipArchiveEntry entry in archive.Entries)
    {
        if (!(entry.FullName.EndsWith(".TIF", StringComparison.OrdinalIgnoreCase)))
        {
            entry.ExtractToFile(Path.Combine(strZipPath, entry.FullName));
         }
     }
 }

Está dando el error enZipFile.OpenRead(strStartPath). ¿Por qué puedo acceder a la carpeta exacta en el primer bloque de código pero no en el segundo? ¿O hay una manera más fácil de buscar en una carpeta y solo comprimir elementos específicos?

Respuestas a la pregunta(1)

Su respuesta a la pregunta