メインコンテンツへジャンプする

JPNICはインターネットの円滑な運営を支えるための組織です

ロゴ:JPNIC

WHOIS 検索 サイト内検索 WHOISとは? JPNIC WHOIS Gateway
WHOIS検索 サイト内検索

idn wrapper


はじめに

国際化ドメイン名の名前解決 (ドメイン名から IP アドレスを取得すること) を行うには、解決しようとする名前をアプリケーション側で IDN エンコーディングに変換してから DNS サーバに送り出します。

したがって、アプリケーションが国際化ドメイン名を扱えるようになるには、 それぞれのアプリケーションの側で、こうした改良を行う必要があります。 しかし、国際化ドメイン名に対応したアプリケーションは、まだまだ 少ないのが現状です。

そこで、Windows 向けの既存のアプリケーションを国際化ドメイン名に対応 させるためのツールとして idn wrapper を用意しました。 同様の機能を提供する Unix 系の OS 向けのツールとして、idnkit に 含まれる runidn があります。

Windows において、アプリケーションが行うドメイン名の解決処理は、 多くの場合、WINSOCK DLL を利用して行われます。 そこで、idn wrapper では WINSOCK DLL を国際化ドメイン名対応のものに 置き換えることによって、既存のアプリケーションからでも 国際化ドメイン名を使えるようにします。


インストール

idn wrapper をインストールするには、setup.exe を実行します。 このツールは、以下の処理を実行します。

  1. ファイルのインストール
    ディレクトリ \Program Files\JPNIC\idn wrapper (変更可能) 以下に、idn wrapper を構成するファイルをコピーします。
  2. レジストリの設定
    詳細については、idn wrapper の仕様書の レジストリの設定 に関する説明を参照してください。
  3. アイコンの作成
    設定ツールのアイコンを作成し、スタートメニューに登録します。 これによって設定ツールを起動することができます。

設定

idn wrapper のインストールが終わったら、設定ツールを用いて設定を行います。 設定ツールでは、特定のアプリケーションに対して使用する WINSOCK DLL を 置き換えたり、置き換えを解除したりすることができます。

設定ツールを起動すると、以下のようなウィンドウが表示されます。

起動ウィンドウ

リストボックスには、その時点で WINSOCK DLL を置き換えている アプリケーションの一覧が表示されます。 はじめて設定ツールを実行した場合には、ここは空になっています。

アプリケーションの WINSOCK DLL を置き換えるには、「Wrap..」ボタンを 押します。 「Wrap..」ボタンを押すと以下のようなダイアログが表示されます。

Wrap ダイアログ

最初に、WINSOCK DLL を置き換えるアプリケーションの実行ファイル名を 指定します。

Wrap ダイアログ(2)

実行ファイル名は直接入力しても良いですが、ブラウズボタンでファイルを 探すこともできます。

Browse

次にそのアプリケーションのローカルエンコーディングを指定します。 通常は「Default」でかまいません。 アプリケーションが内部エンコーディングとして UTF-8 を採用している 場合は「UTF-8」を指定します。

WINSOCK DLLの置き換えは アプリケーションの実行ファイルのあるディレクトリに 国際化ドメイン名対応の WINSOCK DLL をインストールするという方法で行いますが、 アプリケーションによっては別のディレクトリにある DLL を優先して検索してしまい、置き換えられないものがあります。 このような場合には「Force local DLL reference」ボタンをチェック状態に するとよいでしょう。こうすると DLL の検索順序が変更され、 アプリケーションと同一ディレクトリにある DLL が強制的に優先されるように なります。 ただし DLL の検索順序の変更は WINSOCK 以外の DLL に対しても 影響しますので、 このボタンをチェックすると別の DLL に関して問題が出る可能性はあります。

最後に「Wrap」ボタンを押せば、アプリケーションの WINSOCK DLL が 置き換わります。 WINSOCK DLL を置き換えられたアプリケーションは、 最初のウィンドウのリストボックスに追加されます。 なお、指定したアプリケーションと同じディレクトリに 他のアプリケーションがあれば、 そのアプリケーションについても DLL が置き換えられます。

Unwrap ダイアログ

idn wrapper をバージョンアップした場合には、アプリケーションの WINSOCK DLL を再度置き換える必要があります。 このために、現在置き換えられているアプリケーションに対して、再び 置き換えを行うための「RewrapAll」ボタンが用意されています。

アプリケーションの WINSOCK DLL の置き換えを解除するには、 リストボックスで解除するアプリケーションを選択して、「Unwrap」ボタン を押します。

Unwrap 選択

以下の確認用のダイアログが表示されますので、間違いがなければ「Unwrap」 ボタンを押してください。

Unwrap ダイアログ

WINSOCK DLL の置き換えが解除されると、そのアプリケーションは最初の ウィンドウのリストボックスからも削除されます。

起動ウィンドウ

すべてアプリケーションの置き換えを解除するための「UnwrapAll」ボタン も用意されています。

ログの設定を行うには、「Log..」ボタンを押します。 次のようなダイアログが表示されます。

Log ダイアログ

ログレベルは、次の中から選択することができます。

None
ログを出力しない
Fatal
致命的エラーのみ記録する
Error
致命的でないエラーも記録する
Warning
警告メッセージも記録する
Info
その他の情報も記録する
Trace
トレース出力も記録する

これらは、idnkit ライブラリのログレベルに対応しています。 idn wrapper は idnkit ライブラリ (IDNKIT.DLL) を使用 していますが、idnkit ライブラリから出力されるログは、このログレベル の設定に応じて記録されるかどうかが決まります。 また、idn wrapper 自身が出力するログについては、None 以外を指定すると 記録されるようになります。

このダイアログを用いて、ログファイルのパス名を指定することもできます。 また、ログファイルの内容を表示させたり、ログファイルを削除することも 可能です。

ログレベルやログファイルの設定は、設定時にすでに動作している アプリケーションには影響を与えないことに気をつけてください。

「Advanced..」ボタンを押すと次のようなダイアログが表示されます。 このダイアログでは、通常は変更する必要のない設定を変更することができます。

Advanced ダイアログ

このダイアログを使用して、次の2種類の設定を行うことができます。

IDN Wrapping Mode
WINSOCK DLL を置き換える方法を設定します。 通常はデフォルトで設定されている項目を選択しておけばよいはずですが、 問題が起ったときには別の項目にすると動くようになるかもしれません。

各選択項目の意味については、idn wrapper の仕様書の 変換モード に関する解説をご覧ください。

IDN Configuration
idnkit の設定ファイル名を指定します。 また「Edit」ボタンを押すことにより、ファイルの内容を編集することも可能です。 設定ファイルの記述の仕方については、 idnkitの設定 をご覧ください。

バージョンアップ

もしもすでに mDN Wrapper (idn wrapper の前身) がインストールされて いるマシンに idn wrapper をインストールする場合には、インストール前 にアプリケーションの WINSOCK DLL を置き換えをすべて解除してください。 これを行うための最も簡単な方法は、mDN Wrapper の設定ツールを起動して 「Unwrap All.」を実行することです。

また、idn wrapper をバージョンアップした場合には、アプリケーションの WINSOCK DLL を再度置き換える必要があります。 これも、設定ツールの「RewrapAll.」を実行すると、簡単に行えます。


アンインストール

インストールした idn wrapper を削除するには、コントロールパネルの 「アプリケーションの追加と削除」から「idn wrapper」を選択して削除します。 (「追加と削除」ボタンを押してください。)


制限事項

idn wrapper には、いくつかの制限事項があります。 とくに、ある種のアプリケーションは、残念ながら WINSOCK DLL を 置き換えることができません。 ここでは、idn wrapper の制限事項について説明します。

WINSOCK DLL のバージョン

idn wrapper は、元のWINSOCK のDLL のバージョンに強く依存します。 WINSOCK DLL のバージョンが変わると、idn wrapper が動作しなくなる 可能性があります。

今回作成されたidn wrapper は、次のシステムでの動作を確認しています。 ただし、将来にわたって動作する保証はありません。

  • Windows XP
  • Windows 2000
  • Windows Me

DNS, WINS, LMHOSTS

Windows では、DNS だけではなく、WINSやLMHOSTS によってもドメイン名、 ホスト名の解決が行われます。 idn wrapper を使った場合には、これらのすべての方式について、 国際化ドメイン名への対応のためのエンコーディング変換が行われることになります。

このため、Windows が、WINSやLMHOSTS を使っている場合には、予期しない 問題が発生する可能性があります。 idn wrapper を使う場合には、名前解決にDNS だけを使用することをお勧めします。

ドメイン名以外の名前の解決

WINSOCK 2.0 に用意されている以下の API は、 ドメイン名以外でも使用できる汎用の名前解決用のAPI として定義されています。

  • WSALookupServiceBeginA
  • WSALookupServiceNextA
  • WSALookupServiceEnd

現時点では、これらはもっぱらドメイン名の解決で使用されていますが、 他の名前(例えばサービス名)の解決にも使用できることになっています。

idn wrapper は、名前の対象の如何にかかわらず、名前のエンコーディング を変換してしまうので、アプリケーションがこれらのAPI をドメイン名以外 の目的で使っている場合には、問題を引き起こす可能性があります。

名前解決用の API を使わないアプリケーション

アプリケーションによっては、ドメイン名の解決に WINSOCK DLL に用意されている名前解決用の API を使用しないものもあります。 たとえば、nslookup は、これらのAPI を使用しないで、 直接DNS サーバと通信しています。 このようなアプリケーションに対して idn wrapper を用いても、 国際化ドメイン名は利用できません。

特定の WINSOCK DLL を使用しているアプリケーション

アプリケーションによっては、DLL を検索する際に、標準の検索方法に 従わずに特定のパスの DLL を使用しているものがあります。 idn wrapper はアプリケーションの実行ファイルと同じディレクトリに 国際化ドメイン名対応した WINSOCK DLL を置くことによって動作しますので、 このようなアプリケーションの場合、 このままでは WINSOCK DLL を置き換えることができません。

このようなアプリケーションに対しては、 設定ツールで「Wrap」ボタンにより WINSOCK DLL を置き換える際に 「Force local DLL reference」ボタンをチェックすることで、 国際化ドメイン名が利用できるようになることがあります。


付録: システムディレクトリへのインストール

idn wrapper は、国際化ドメイン名対応の WINSOCK DLL をアプリケーションの 実行ファイルがあるディレクトリにインストールすることで、アプリケーションの 使用する WINSOCK DLL を置き換えます。 このため idn wrapper を使用するためにはそれぞれのアプリケーションに対して 設定ツールで設定を行う必要があります。

しかし、システムディレクトリにある WINSOCK DLL を国際化ドメイン名 対応のものに直接置き換えてしまうことで、設定ツールを使わずに 全てのアプリケーションの WINSOCK DLL を置き換えてしまうことも可能です。 ただしこれは非常に危険な設定で、 注意しないと次のような問題が起きる可能性があります。

  • DLL を入れ替えた状態でもう一度同じ操作を行なうと、元の WINSOCK DLL が失われてしまいます。
  • サービスパックやアプリケーションなどで、WINSOCK DLL を再導入する ものがありますが、これによってもWINSOCK が利用不能になることが あります。

このような状態になると、ネットワーク機能が全く使えなくなったり、最悪 はWindows の起動すら出来なくなる可能性があります。 こうした理由により、システムディレクトリへのインストールは idn wrapper の標準のインストール手順では提供していません。 しかし、どうしても行いたいという場合には、以下に手順を示しますので 自己責任で行ってください。

まず、通常の手順で idn wrapper を インストール します。 次に、Windows のシステムディレクトリに置かれている WINSOCK DLL を idn wrapper が提供している DLL に置き換えます。 具体的には次の手順で行います。

ren wsock32.dll wsock32o.dll
ren ws2_32.dll  ws2_32o.dll
copy somewhere\wsock32.dll wsock32.dll
copy somewhere\ws2_32.dll  ws2_32.dll

このページを評価してください

このWebページは役に立ちましたか?
よろしければ回答の理由をご記入ください

それ以外にも、ページの改良点等がございましたら自由にご記入ください。

回答が必要な場合は、お問い合わせ先をご利用ください。

ロゴ:JPNIC

Copyright© 1996-2024 Japan Network Information Center. All Rights Reserved.