ZIPフォルダ機能無効化でも解凍する(Tablacus Explorer)
Tablacus Explorer 14.1.27からはZIPフォルダ機能が無効化されている場合はzipfldr.dllを直接使ってZIPを解凍する機能を追加しました。
Windowsの高速化などでZIPフォルダ機能を無効化している場合には、アドオンの解凍で解凍ソフトを指定する必要があったのですが、これで指定無しでもアドオンのインストールやTablacus Explorerのアップグレードができるようになりました。
ZIPフォルダ機能無効化でCoCreateInstanceが失敗する場合はLoadLibraryでモジュールをロードしてDllGetClassObjectとIClassFactory->CreateInstanceでインスタンスを作成します。(teCreateInstance)
このインスタンスからはIPersistFile、IStorage、IShellFolder2等が取得できます。
そして、IPersistFile->Loadでファイルを指定し、IStorageを使って解凍します。(teExtract)
XPの場合はIEnumSTATSTGで更新日時を取得できないようなので、IShellFolder2->GetDetailsExで更新日時を取得しています。
IStorageからIEnumSTATSTGでZIPの一覧を取得していますが、IShellFolderからIEnumIDListでZIPの一覧を取得する方法も使えそうな気がします。XPの更新日時を考えるとこっちも良いかな。
詳しくはTablacus Exploerのソースをご覧ください。