I would guess that what's happening is that each entry in the archive has a full path attribute and by then trying to extract the entry to a specific folder you are ending up with an invalid path like "C:\SomeFolder\C:\SomeFolder\SomeFile.ext". I've never used DotNetZip so I don't know if that's the case or how you'd fix it but maybe see if there's an Extract overload that doesn't take a location and just uses the path contained in the entry or else ignores the path in the entry and uses the path you specify.