Home » Blog
date 28.Apr.2013

■ How to stop opening .ZIP files as folders in Windows 7/8/10

One of the niceties of shell namespace is that .ZIP files can be opened as folders in windows explorer and shell aware file managers like xplorer². I like this feature as you can do things with zipfolders that your stand-alone ZIP program cannot do, e.g. preview thumbnails and compare folders without extracting the archive. However some people prefer the speed and compression quality of a program like winzip, winrar or 7zip instead of the windows compressed folder handling.

It is possible to stop xplorer² opening ZIP files as folders as explained in FAQ B9 but things got progressively more complicated with newer windows versions, and nowadays you have to get into ridiculous lengths to disable zipfolders — fumbling with registry key permissions and such nonsense. What we need is something simple — more on that later.

Technically speaking, the virtual folder that represents the ZIP archive contents is called CompressedFolder and is furnished by a COM object living in a system DLL called ZIPFLDR.DLL. Like all COM objects it used to support its own registration and unregistration (disabling) using a command like regsvr32 /u %WINDIR%\SYSTEM32\zipfldr.dll from a console window. Things got pear-shaped with windows vista and 7, where ZIPFLDR.DLL stopped exporting the essential DllUnregisterServer command, so trying to deregister zipfolders would result in this error message:

The module "zipfldr.dll" was loaded but the entry-point DllRegisterServer was not found.
Make sure that "zipfldr.dll" is a valid DLL or OCX file and then try again.

Running the dependency walker (DEPENDS.EXE) on zipfldr.dll (see picture to the right) shows that compared to the windows XP version, it misses some basic exports that should really be there — that's why the REGSVR32 command fails. I cannot understand why they went ahead and removed this functionality castrating the inproc server, but there you have it.

To circumvent this error the recommendation was to manually delete HKCR\CLSID\{E88DCCE0-B7B3-11d1-A9F0-00AA0060FA31} registry key, which is the definition of the CompressedFolder COM object. However this system key is well protected, so you needed to edit its security attributes first. And you should make a backup of it first in case you changed your mind afterwards.
zipfldr.dll exports in XP and win7

A simpler solution to disable zipfolders

But enough of this theory, here's a much easier way to get rid of compressed folders from windows explorer and xplorer².

  • Install your favorite ZIP application (winzip, winrar or what have you) and let it take over the ZIP archive file association
  • Use regedit to rename this registry key from CLSID to CLSID.bak:
CLSID registry key rename
The tricky part is renaming the CLSID registry key, which shouldn't be attempted by laymen at home — but I gather that the average xplorer² user is experienced enough to be quite fit for the job. Once you start REGEDIT from Start menu (or however you can using windows 8 :) use the tree to the left to locate the said SystemFileAssociations\.zip\CLSID key and select it, then press <F2> key to rename it. Any name will do, so CLSID.bak is fine. Note that we don't need any special permissions and if we change our minds we can just cut off the .bak bit and restore the original functionality.

And from now on you will never see a zip file in windows explorer's folder tree, and they will all open in your favorite archive manager program.

xplorer² v5.2 and later has an advanced setting called Blocked archives (szNoDirTypes) where you can pass a comma separated list of disabled archives. E.g. set it to ZIP to disable zipfolders the easy way! Use Tools > Advanced options menu to tweak this setting.

Post a comment on this topic »

Share |

©2002-2013 ZABKAT, all rights reserved | Privacy policy | Sitemap