/*
Add reference under COM tab first: Microsoft Shell Controls and Automation
This Shell32.dll can be embedded into program in .NET 4 by setting Embed Interop Types to True.
*/

public static void UnZip(string zipFile, string destFolder)
{
    if (Directory.Exists(destFolder))
        Directory.Delete(destFolder,true);
    Directory.CreateDirectory(destFolder);
    Shell32.Shell sc = new Shell32.Shell();
    Shell32.Folder SrcFile = sc.NameSpace(zipFile);
    Shell32.Folder DestFolder = sc.NameSpace(destFolder);
    Shell32.FolderItems items = SrcFile.Items();
    DestFolder.CopyHere(items, 20);
}

/*
CopyHere method cannot create folder by itself, so we must create destFolder separately.
The 20 in CopyHere(items, 20) is a kind of intOptions flags (4|16), 4 means donot show copying progress bar, 16 means "yes to all" of override decision.
For about this method please go to http://msdn.microsoft.com/en-us/library/ms723207.aspx
*/