ネットカフェや社内から家にアクセスするときに使う方法なのですが、localhostでSSHのポートフォワードを仕掛けて家のサーバにアクセスしてます。
なぜかリモートデスクトップってlocalhostに対して接続しようとするとエラーになるんですよね。
で試行錯誤してみた結果をまとめておく。
■リモートデスクトップでlocalhostに接続できない
WindowsXP上で「リモートデスクトップ接続」を用いてlocalhostに接続しようとすると、以下のようなメッセージがでて接続できない。
『クライアントは接続できませんでした。既にこのコンピュータのコンソールへ接続しています。新しいコンソール セッションは確立されません。』
WindowsXPにはリモートデスクトップサーバ機能があり、リモートデスクトップによってコンソールと同じ画面に接続できる。このため、自分自身に接続するとおかしな事になってしまうので、それを避けるためだと思われる。
一方、Windows2000に「リモートデスクトップ接続」をインストールした場合は問題なくlocalhostに接続できる。Windows2000 Serverにもリモートデスクトップと同様の機能(ターミナルサービス)があるが、こちらはWindowsXPとは違いコンソールとは違うセッションに接続できる。そのためWindowsXPのときのようなおかしな状態にならないし、新しいセッションを開くために自分自身に接続するとういう用途も考えられなくはない。この事からOSを判別して接続できなくしていると思われる。
なお、Windows98/Meにリモートデスクトップをインストールした場合もlocalhostへの接続は問題なくできる。
実際にリモートデスクトップサーバが動いていない・接続先のポートが違うなどの場合でもlocalhostに接続できないのは不便だ。例えばSSHやsocksのポートフォワーディングをしたい時に問題になる。
■WindowsXPでlocalhostにリモートデスクトップ接続をする方法
実はWindowsXPの互換実行機能を使ってリモートデスクトップを起動するとlocalhostへ接続できる。
つまりOSの判別さえクリアすればOKということだ。
互換モード設定はシステムファイルに対してはできないので、ファイルを一旦コピーする必要がある。
具体的な手順は以下のとおり。
・以下のファイルを任意のフォルダにコピー
%SystemRoot%\System32\mstsc.exe
%SystemRoot%\System32\mstscax.dll
・コピーした"mstsc.exe"へのショートカットを作る。
・ショートカットのプロパティ-互換性の設定で
「Windows 98 / Windows Me」を設定する。
なお、互換性モードを「Windows2000」にしてもうまくいかない。
WindowsNTかどうかを判別したあと、WindowsXPのリモートデスクトップサーバがあるかどうかを確認しているようだ。
(前述したようにリモートデスクトップサーバが存在しても、Server向けOSのように複数のセッションを開けるものであれば接続可能である)
§ 竜神橋みけ [今回のリモートデスクトップの件参考になりました。 ローカルでやろうとしたら、出来なかったのでリモートアシスタンスでち..]
§ Suika [お役にたってよかったですヽ(´ー`)ノ]