ドメインのメンバサーバとして動作している Windows NT Server のファイルサーバの共有フォルダに Windows 95/98 からアクセスすると、図1のような「\\コンピュータ名\IPC$」というウインドウが開き、パスワードの入力を求められます。 正しいパスワードを入力すればアクセスできる場合もあるようなのですが、どうやっても「パスワードが間違っています」と言われアクセスできない場合もあります。 どうすればアクセスできるのでしょうか。そもそも IPC$ とは何のことでしょうか。
----- 図1: パスワード入力を求めるダイアログ -----
これは、Windows 95/98 の仕様が原因であり、かなり根が深い問題です。
Windows 95/98 マシンがネットワーク上のリソースにアクセスするときは、必ず図2のマシンのログオン画面で入力したアカウントやドメインの情報を用います。
これは直接WNetAddConnection2()等のAPIをコールしても回避できない制約で、 Windows NT/2000/XP のように、接続毎に入力し直すことはできません。
このため、アクセス先のサーバにログオン時に利用したアカウント名のアカウントが存在しない場合、アクセス先のサーバで Guest アカウントが有効になっていない限りはどうやってもアクセスできないのです。
----- 図xx2: Windows 95/98 のログオン画面 -----
ただし、アクセス先のサーバに同名のアカウントは存在しているが、パスワードだけが異なっているという場合は、パスワードの入力を求めるウインドウに対して正しいパスワードを入力することでアクセスできます。
しかし、Windows 95/98 から ドメインのメンバである Windows NT 系列のマシン(Windows NT Workstation 4.0 などのクライアント系 OS も含む) にアクセスする時は、これだけではうまくいかないことがあります。
Microsoft の認証の実装では、「<ドメイン名>\<ユーザ名>」という形式のアカウントでアクセスの要求があった場合、アクセス先のサーバに該当のアカウントがなければ、自動的に「<アクセス先サーバ>\<ユーザ名>」というアカウント情報で認証を試みます。
従って、図3のように、ユーザ名の部分さえあっていれば、所属するドメインが異なっているかドメインに所属していないアカウントからでもアクセスを行うことが可能です。
図3
ドメインのメンバーの場合も、図4のように、ドメインコントローラに「<ドメイン名>\<ユーザ名>」形式で問い合わせて該当するアカウントがないと、マシンのローカルアカウント中に「<ユーザ名>」に合致するアカウントがないかを検索します。
図4
ただし、ドメインコントローラの場合は、図5のように「<ドメイン名>\<ユーザ名>」形式のアカウントがなければ、次にドメインのアカウント中で「<ユーザ名>」の部分だけが合致するアカウントがないかどうかを検索します。
図5
従って、「UserA」というアカウントがあるドメイン DOM1 に対して、「DOM2\UserA」というアカウントで認証要求があった場合、ドメインコントローラでは、最終的に「DOM1\UserA」として認証が行なわれますが、メンバサーバでは「UserA」というローカルアカウントがない限り認証に失敗します。
このため、ユーザの認証をドメインのアカウントに任せている Windows NT 系列のマシンに対しては、「<ドメイン名>」の部分が異なるアカウントでアクセスを行う Windows 95/98 マシンからはどうやってもアクセスできないという事態が発生するのです。
ところで、 Windows 95/98 のアカウントの「<ドメイン名>」の部分を生成する方式にも落とし穴があります。
まず、図xx のように「Microsoft ネットワーククライアント」のプロパティで「Windows NTのドメインにログオンする」がチェックされていた場合でも、最終的には図xxのログオン時のダイアログボックスでユーザが「ドメイン名」に入力したドメイン名が利用されます。
プロパティでの設定は、ログオン時のダイアログボックスに現れるドメイン名を設定するためだけのもののようで、別のドメイン名を強制的に入力してログオンすると、プロパティ中の記述自体が変更されてしまいます。
さらに、「Windows NTのドメインにログオンする」がチェックされていない場合、ログオン時のダイアログボックスでは、図xxのようにドメイン名は指定できなくなりますが、この時は「識別名」タブで入力されたワークグループ名がアカウントが所属するドメインの名として利用されます。
このように、 Windows 95/98 は認証時のアカウント情報が変更できないため、複数の信頼関係にないドメインが存在しているような環境では、どうしてもどこかのドメインにログオンできないという事態が発生してしまうことも多いでしょう。
しかし Microsoft の認証の仕様上、決定的な対策というものは存在しません。
あまり推奨は出来ませんが、アクセスさせたいメンバサーバにローカルアカウントを個別に作成するというのが現実的な解になるでしょう。