「統合アーカイバ・プロジェクト」の API 仕様に準拠した LZH 書庫の操作を行うための DLL (ダイナミック・リンク・ライブラリー) です。 基本的には LHA.DLL と同様の API に若干の追加が行われたものとなっていますので, Win3.1 で LHA.DLL を使ったことのある方であれば UNLHA32.DLL も同じように扱えるはずです。
元々「LHA.EXE と同じ感覚で手軽に書庫操作を行う」ことを目的として作られているので, 「格納ファイルの分割展開・圧縮」「複数の格納ファイルを同時にオープン」といった細かい操作は行えません。 反対に LHA.EXE のコマンド知識があれば UNLHA32.DLL を使って同じような感覚で書庫操作が行えます。
LHA.EXE のコマンド仕様としての観点では, LHA.EXE Ver 2.67 を基準として数々の機能追加を行ってあります。 が, 最初に作成したのが UNARJ.DLL ということで, ARJ 系のコマンド・スイッチも付加されているので, 体系的にはかなり混乱してしまっています。
DLL であることから, UNLHA32.DLL 単体では何もできません。 (例えば) ここで公開されている LHMelt のような対応アプリが必ず必要になります。
よくある質問
・脆弱性関連については, 以下のページを参照してください。
・各種ソフトの LZH 書庫への対応状況については, 以下のページを参照してください。
・ファイルを圧縮したのに全然圧縮されていない (サイズが変わらない)
jpeg 形式の画像など, 一部のファイルは「それ自体すでに圧縮されている」ファイルです。 いくら UNLHA32.DLL にファイルを圧縮する機能が施されていたとしても, すでに圧縮されているものを, それ以上圧縮することはできません。
・「エンドマークが存在しません」エラーについて
LZH 書庫を扱うツールの中には, 一部不正なヘッダーを作成してしまうものがあります。
これまでの UNLHA32.DLL では, 致命的なものでない限りは, そのような書庫についても扱うようになっていましたが, そのような書庫を扱えない対応アプリが存在し, 結果として書庫やファイルを失ってしまう…という事故が意外と多く発生していました。 このため, 最近の UNLHA32.DLL については, 安全性を考慮して, そのような書庫については扱わないようになっています。
特に多いのが「必要なエンドマークが存在しない」書庫で, 結果として, これによるエラーを比較的多く目にすることになってしまっています。
これらは, 「破損ヘッダー」と見なせるものなので, "-jc" スイッチを使用することで, 処理を継続させることができます。 「エンドマークが存在しない」のエラーの場合は, 実際にはすべての格納ファイルの処理が終了しているので, メッセージ等が表示される以外の (展開できないファイルが発生する等の) 被害を伴いません。 拙作の LHMelt では「破損ヘッダーを読み飛ばす」を有効にすることで, この不具合を回避することが可能です。
・配布ファイルを展開したのに UNLHA32.DLL だけ表示されない
Explorer (他のファイラーでも設定によって。) では, ユーザーが指定しない限り ".DLL" の拡張子をもつファイルは表示されません。 (WinXP であれば) "ツール―フォルダーオプション" メニューで, 全てのファイル及びシステムファイルが表示されるように設定すれば見えるようになります。
・タイムスタンプがずれてしまう
UNLHA32.DLL が通常作成する書庫では, タイムスタンプは, すべて協定世界時 (UTC) で扱われます。 Win3.1 や MS-DOS 用のプログラムでは, 環境変数の設定に基づいて UTC→地方時間 (例えば日本標準時間。) への変換が行われるようになっており, たとえ WinXP 等の環境であっても, コマンドプロンプト画面 (DOS 窓) 等で実行する場合には, この環境変数が設定されていないとタイムスタンプがずれてしまいます。
日本国内で使用する場合には, 次の環境変数を設定してください。
TZ=JST-09
・パス情報をもったファイルが扱えず表示すら行われない
この不具合が発生した場合は, 十中八九 UNLHA32.DLL の「厳格なファイル名サーチ」が有効となっているのが原因です。 UNLHA32.DLL の設定ダイアログを呼び出して, この項目を無効にしてください。
・「UNLHA32.DLL Ver 1.51 以降を使用すると展開が行えない」の不具合について
Ver 1.51 での仕様変更に伴い, 「新規展開が行えない」という不具合が起こるアプリが発生しています。
Ver 1.52 以降では設定ダイアログで設定を行うかレジストリーを直接設定することにより不具合を回避することができますが, 設定ダイアログを呼び出せるアプリを持っていない, ダイアログの呼び出し方法が分からない…等の場合は, 以下の .reg ファイルをダウンロードした上で実行・レジストリーの読み込みを行ってください。
なお, WinLM32, WinFM2k については, 暫定的に UNLHA32.DLL Ver 1.52a 以降で対応してあります。