Прежде всего .NET, хотя он поддерживает сжатые файлы, но не поддерживает ZIP-файлы (не уверен в .NET v4)
В любом случае я использовал SharpZipLib
http://www.icsharpcode.net/OpenSource/SharpZipLib/ (GPL + исключения, внимательно прочитайте)
Эта библиотека позволяет вам проходить через ZipStream и получать доступ к ZipEntry, который предоставляет вам всю информацию о файле.
Имейте в виду, что при сжатии файлов, которые вы хотите, если вы сжимаете папку, первой записью будет эта папка. Не проблема, но если вы хотите иметь четкий список, заархивируйте его без путей к папкам.
Также поддерживает пароли на почтовых индексах.