---- To non-Japanese users ------------------------------------------ An English version of this README file is also available as "README_e.txt" under the installation directory (default "C:\Program Files\JPNIC\mDN Wrapper"). --------------------------------------------------------------------- mDN Wrapper - ウィンドウズにおけるクライアント側での変換 Copyright (c) 2000,2001 Japan Network Information Center. All rights reserved. *** 重要な注意 **************************************************** もしもすでに mDN Wrapper がインストールされているマシンに新しいバー ジョンの mDN Wrapper をインストールする場合には、新しいバージョンを 最初に起動する際に、ラップされているすべてのプログラムを再度ラップ する必要があります。これはコンフィギュレーション GUI で "Rewrap All" というボタンを押すことで実行することができます。 ******************************************************************* 1. はじめに ウィンドウズで多言語ドメイン名を扱えるようにするためには、ウィンド ウズ上のクライアントアプリケーションにおいて、解決しようとする名前 のエンコーディングを、DNS サーバが受付ける形式のものに変換する必要 があります。これは、ウィンドウズ上のアプリケーションが、きちんと多 言語ドメイン名を扱えるようになっていなければならない、ということで あり、本来はそれぞれのプログラムの作成者が行なうべきことです。 しかし、標準が決まっていない現状では、プログラム作成者にこのような 対応を期待するのは無理なので、既存のアプリケーションを多言語ドメイ ン名対応させるためのトリックが必要になります。mDNkitに含まれる mdnsproxyサーバはそのための一つの方法です。ここでは、もう一つの方 法、mDN Wrapper を提示します。 ウィンドウズにおいて、多くの場合、ドメイン名解決の要求はWINSOCK DLL に渡されます。そこで、WINSOCK DLL を多言語ドメイン名対応のもの に置き換えてやれば、既存のプログラムからでも多言語ドメイン名を使う ことができるようになります。これが mDN Wrapper の基本的なアイデア です。 2.セットアップとコンフィギュレーション 2.1.セットアッププログラム mDN Wrapper をインストールするには"setup.exe" を実行します。セットアッ ププログラムは次のような処理を行います。 + ファイルのインストール ディレクトリ「\Program Files\JPNIC\mDN Wrapper」(セットアップ 時点で変更可能)以下に、mDN Wrapper を構成するファイルをコピーし ます。 + レジストリの設定 HKEY_LOCAL_MACHINE\Software\JPNIC\MDN 以下に必要なレジストリキー、 レジストリ値を作成、設定します。 ConfFile REG_SZ "<インストールディレクトリ>\mdn.conf" mDNkit のコンフィギュレーションファイルの名前です。このファ イルは多言語ドメイン名の処理に必要な各種のパラメータを設定 するためのものです。詳しくはファイルの内容をご覧ください。 この値は後述するコンフィギュレーションプログラムで変更する ことができます。 LogFile REG_SZ "<インストールディレクトリ>\mdn_wrapper.log" mDN Wrapper のログファイルの名前です。ファイルは多言語ドメ イン名の処理に必要な各種のパラメータを設定するためのもので す。詳しくはファイルの内容をご覧ください。この値もコンフィ ギュレーションプログラムで変更することができます。 LogLevel DWORD -1 ログレベルの指定です。デフォルトは -1 で、これは全くログを 出力しないという意味です。この値もコンフィギュレーションプ ログラムで変更することができます。 PerProg キー プログラム毎の設定値を格納するためのキーです。この下に、プロ グラムの実行モジュール名をキーとしてプログラム個別の設定が記 録されます。設定される情報は以下の二つです。 PerProg\\Where REG_DWORD 変換位置 PerProg\>progname>\Encoding REG_SZ エンコーディング名 エンコーディング名は通常コンフィギュレーションプログラムによっ て設定されます。変換位置は、標準インストールでは不要です。シ ステムディレクトリへのインストールを行なった場合には、レジス トリエディタで環境に合わせて設定する必要があります。 + アイコンの作成 コンフィギュレーションプログラムのアイコンを作成し、スタートメニュー に登録します。これによってコンフィギュレーションプログラムを起動 することができます。 アンインストールするには、コントロールパネルの「アプリケーションの追 加と削除」で、「mDN Wrapper」 を選択して削除(「追加と削除」ボタン) します。 2.2.コンフィギュレーションプログラム コンフィギュレーションプログラムは、アプリケーションを特定してラップ したり、アプリケーションのラップを解除するためのツールです。 起動すると以下のような画面が表示されます。 ┌─┬─────────────────────────┬─┬─┬─┐ │ │mDN Wrapper - Configuration │_│□│×│ ├─┴─────────────────────────┴─┴─┴─┤ │ Wrapped Program ┌─────┐│ │┌──────────────────────┬─┐│ Wrap.. ││ ││ │∧│└─────┘│ ││ ├─┤┌─────┐│ ││ │ ││ Unwrap.. ││ ││ │ │└─────┘│ ││ │ │┌─────┐│ ││ │ ││UnwrapAll.││ ││ │ │└─────┘│ ││ │ │┌─────┐│ ││ │ ││RewrapAll.││ ││ │ │└─────┘│ ││ │ │┌─────┐│ ││ │ ││ Log.. ││ ││ │ │└─────┘│ ││ │ │┌─────┐│ ││ ├─┤│Advanced..││ ││ │∨│└─────┘│ │├─┬──────────────────┬─┼─┘┌─────┐│ ││〈│ │〉│ │ Exit ││ │└─┴──────────────────┴─┘ └─────┘│ └─────────────────────────────────┘ リストボックスには、その時点でラップされているプログラムが表示されま す。最初に実行した場合には空になっています。 プログラムをラップするには、"wrap"ボタンを押します。"wrap"ボタンを押 すと以下のようなダイアログが表示されます。 ┌─┬────────────────────────┬─┬─┬─┐ │ │mDN Wrapper - Wrap Executable │_│□│×│ ├─┴────────────────────────┴─┴─┴─┤ │ ┌───────────────────┐┌────┐│ │ Program: │ ││Browse..││ │ └───────────────────┘└────┘│ │ ┌───┐ │ │Encoding: │ │ ○Default ○UTF-8 │ │ └───┘ │ ├────────────────────────────────┤ │ ┌────┐┌────┐│ │ │ wrap ││ cancel ││ │ └────┘└────┘│ └────────────────────────────────┘ 最初に、ラップするプログラムの実行ファイル名を設定します。直接入力す るか、ブラウズボタンでファイルを探してください。次にそのプログラムの ローカルエンコーディングを指定します。通常は「Default」 でかまいません。 プログラムが国際化エンコーディングに従っている場合にのみ「UTF-8」 を 指示します。最後に「wrap」ボタンを押せば、プログラムが、指定されたエン コーディングでラップされます。ラップされたプログラムは、最初のウィン ドウのリストボックスに反映されます。 mDN Wrapper をバージョンアップした場合には、ラップ用の DLL をアップ デートするために、プログラムを再ラップする必要があります。このために、 現在ラップされているプログラムに対して再度ラップを行うための「rewrap all」ボタンが用意されています。 プログラムに対するラップを解除するには、リストボックスで解除するプロ グラムを選択して、「unwrap」ボタンを押します。以下の確認用のダイアロ グが表示されますので、間違いがなければ「unwrap」ボタンを押してくださ い。 ┌─┬────────────────────────┬─┬─┬─┐ │ │mDN Wrapper - Unwrap Executable │_│□│×│ ├─┴────────────────────────┴─┴─┴─┤ │ ┌─────────────────────────┐│ │Program: │ ││ │ └─────────────────────────┘│ ├────────────────────────────────┤ │ ┌────┐┌────┐│ │ │ Unwrap ││ Cancel ││ │ └────┘└────┘│ └────────────────────────────────┘ ラップが解除されると、そのプログラムは最初のウィンドウのリストボック スからも削除されます。 プログラムに対して現在設定されているラップをすべて解除するための 「unwrap all」ボタンも用意されています。 ログの設定を行うには、"log" ボタンを押します。次のようなダイアログが 表示されます。 ┌─┬────────────────────────┬─┬─┬─┐ │ │mDN Wrapper - Log Configuration │_│□│×│ ├─┴────────────────────────┴─┴─┴─┤ │ Log Level: ○None ○Fatal ○Error ○Warning ○Info ○Trace │ │ ┌─────────────────┐┌────┐│ │ Log File:│ ││Browse..││ │ └─────────────────┘└────┘│ │ ┌───┐ ┌───┐ │ │Log Operation:│ View │ │Delete│ │ │ └───┘ └───┘ │ ├────────────────────────────────┤ │ ┌────┐┌────┐│ │ │ OK ││ Cancel ││ │ └────┘└────┘│ └────────────────────────────────┘ ログレベルは次の中から選択することができます。 None ログを出力しない Fatal 致命的エラーのみ記録する Error 致命的でないエラーも記録する Warning 警告メッセージも記録する Info その他の情報も記録する Trace トレース出力も記録する ここにあげたログレベルの設定は、MDN ライブラリ (libmdn) が出力する ログに対してのみ有効です。mDN Wrapper 自身が出力するログは ON/OFF しかできません。None を指定すると OFF に、それ以外のレベルを指定すると ON になります。 このダイアログを用いて、ログファイルのパス名を指定することもできます。 また、ログファイルの内容を表示させたり、ログファイルを削除することも 可能です。 ログレベルやログファイルの設定は、設定時にすでに動作しているプロセス には影響を与えないことに気をつけてください。 "advanced" ボタンを押すと「advanced configuration」用のダイアログ が表示されます。このダイアログは上級ユーザのためのもので、適切なデ フォルトが設定されているために通常ユーザが変更する必要のないような 基本的なパラメータを変更することができます。 ┌─┬────────────────────────┬─┬─┬─┐ │ │mDN Wrapper - Advanced Configuration │_│□│×│ ├─┴────────────────────────┴─┴─┴─┤ │ MDN Wrapping Mode │ │ ○Wrap both WINSOCK 1.1 and WINSOCK 2.0 │ │ ○Wrap only WINSOCK 1.1 │ │ ○Wrap only WINSOCK 2.0 │ │ ○Wrap only WINSOCK 2.0 if it exists. │ │ Otherwise wrap only WINSOCK 1.1 │ ├────────────────────────────────┤ │ MDN Configuration │ │ ┌─────────────────┐┌────┐│ │ Log File:│ ││Browse..││ │ └─────────────────┘└────┘│ │ ┌───┐ │ │ │ Edit │ │ │ └───┘ │ ├────────────────────────────────┤ │ ┌────┐┌────┐│ │ │ OK ││ Cancel ││ │ └────┘└────┘│ └────────────────────────────────┘ このダイアログを使用して、次の3種類の設定を行うことができます。 Wrapping Mode ラップ方法を設定します。通常はデフォルトで選択されている項目の ままにしておけばよいはずですが、問題が起ったときには別の項目に すると動くようになるかもしれません。 MDN Configuration コンフィギュレーションファイル名を指定します。また "Edit" ボタ ンを押すことにより、ファイルの内容を編集することも可能です。 3. 制限事項 3.1. DLL バージョン ラッパーDLL は、元のWINSOCK のDLL のバージョンに強く依存します。これ は、非公開のエントリも含めてすべてのエントリを提供する必要があるため です。このためWINSOCK DLL のバージョンが変わると、mDN Wrapper が動作 しなくなる可能性があります。 今回作成されたmDN Wrapper は、 WinNT4.0 SP6a (WINSOCK 1.1 + 2.0) Win98 (WINSOCK 1.1 + 2.0) Win95 OSR2 (WINSOCK 1.1) で動作を確認しています。ただ、将来にわたって動作する保証はありません。 3.2. DNS, WINS, LMHOSTS WIndows では、DNS だけではなく、WINSやLMHOSTS によってもドメイン名、 ホスト名の解決が行なわれます。mDN Wrapper を使った場合には、ドメイン 名の変換が、これらの方式へのディスパッチを行なう場所よりも上位層で行 なわれるので、これらのすべての方式について、ドメイン名、ホスト名の変 換が行なわれることになります。このため、Windows が、WINSやLMHOSTS を 使っている場合には、予期しない問題が発生する可能性があります。これに ついては、mDN Wrapper を使う場合には、名前解決にDNS だけを使用するこ とをお勧めします。 3.3. ドメイン名以外の名前の解決 WINSOCK 2.0 の名前解決API WSALookupServiceBeginW WSALookupServiceNextW WSALookupServiceEnd は、ドメイン名以外でも使用できる、汎用の名前解決用のAPI として定義さ れています。現時点では、これらはもっぱらドメイン名の解決で使用されて いますが、他の名前(例えばサービス名)の解決にも使用できることになって います。 mDN Wrapper は、名前の対象の如何にかかわらず、名前のエンコーディング を変換してしまうので、これらのAPI が、ドメイン名以外の解決に使われて いる場合には、問題を引き起こす可能性があります。 3.4. 名前解決API を使わないプログラム アプリケーションによっては、ドメイン名の解決にこれらのAPI を使用しな いものもあります。例えば、'nslookup'は、これらのAPI を使用しないで、 直接DNS サーバと通信してしまいます。このようなアプリケーションについ ては、mDN Wrapper は役に立ちません。 3.5. 特定WINSOCK DLL にバインドされたアプリケーション アプリケーションによっては、標準のDLL サーチパスに従わないで、特定の パスのDLL にバインドされているものがあります。よく使われるプログラム の中では、Netscape Communicator がそうなっています。このようなプログ ラムについては、標準のインストール/コンフィギュレーションではラップ することはできません。 このようなプログラムについて、どうしてもラップする必要があるなら、シ ステムディレクトリへのインストールを行なうことができます。ただし、こ のインストールは大変危険で、場合によってはシステムを再起動不能にして しまう可能性もあります。 3.6. 代替手段としての 'mdnsproxy' これらの制限事項が問題になる場合には、代替手段として'mdnsproxy'を 使うこともできます。これは、DNS サーバとのトランザクションを中継す るので、上で問題になったようなことを回避することができます。 ただし、'mdnsproxy'は、ラッパーよりも複雑な設定が必要ですし、また、 呼び元のプログラムを特定することができませんので、プログラム固有の ローカルエンコーディングを取り扱うことはできません。しかし、上記の 制限事項が問題になるようなケースでは、ラッパーの代わりに使用すると いいかもしれません。 4. レジストリ設定 - まとめ 4.1. レジストリの優先順位 mDN Wrapper の設定情報は、HKEY_LOCAL_MACHINE、HKEY_CURRENT_USERの Software\JPNIC\MDN 以下に格納されます。mDN Wrapperは最初にHKEY_LOCAL_MACHINEの設定を読 み込み、HKEY_CURRENT_USER側にも設定があれば、これで上書きします。通 常は、HKEY_LOCAL_MACHINE 側だけを設定します。ユーザ個別に異なった設 定を使いたい場合のみ、HKEY_CURRENT_USERを設定するようにしてください。 なお、コンフィギュレーションプログラムは HKEY_LOCAL_MACHINE の設定 だけを読み書きするようになっています。 4.2. レジストリキー 全体の共通の設定と、プログラム個別設定とがあります。 _共通定義 Software\JPNIC\MDN\Where 変換位置 0:WINSOCK1.1 WINSOCK2.0の両方で 1:WINSOCK2.0 があればそちらで 2:WINSOCK1.1 だけで 3:WINSOCK2.0 だけで Software\JPNIC\MDN\ConfFile コンフィギュレーションファイル Software\JPNIC\MDN\LogFile ログファイル Software\JPNIC\MDN\LogLevel ログレベル _プログラム個別設定 変換位置、およびプログラム側のエンコーディングはプログラム毎に特定す ることもできます。これらは、以下のキーハイブの下に、プログラム名をキー とする値で設定します。 Software\\JPNIC\\MDN\\PerProg\\\\Where Software\\JPNIC\\MDN\\PerProg\\\\Encoding 指定されていない場合には、 Where 0 1.1、2.0 の両方で変換 Encoding プロセスのコードページ とみなします。