ターミナルサービスで両者のファイルをやり取りしてみる

REPORT


ターミナルサービス間でのファイルコピー

ローカルサーバとの通信ならば NetBIOS やらを利用してファイル共有でもすればなんらもんだいないのですけど、もっと離れたコンピュータを操作するとなると、このご時世、悠長に 135 ポート等をあけるわけにも行かず、とすると Web 共有とかで共有するのが一番なのでしょうかねー、と思っていました。

Web 共有ならまあ、IIS を起動するに当たってそのあたりのセキュリティ回りに注意しなくてはいけないという必要こそあるものの、それほど難なくファイルをやり取りすることが出来ます。が、やっぱり少々勝手が違うですよね。

 

そんななか、ふとしたことからなにやらターミナルサービスのクライアントとサーバ間でファイルを簡単にやり取りできるらしいことがわかったので、そのあたりを調べてみることにしました。

 

Rdpclip ユーティリティ

そもそも今回の件を知ったきっかけは、不明なプロセスが立ち上がってないかな…、と調べてみたのがきっかけでした。

遠隔操作側でタスクマネージャを開いてみると、なにやら見慣れぬ "rdpclip.exe" なるプロセスが…。調べてみたところ、どうやらこれはターミナルサービスにおいてファイルコピーをサポートするためのソフトウェアのようでした。

 

さっそくそのあたりの調査を開始したところ、Microsoft 社のサイト内にて…、

「ターミナルサービスのディフォルトの構成を使用している場合は、ターミナルサービスクライアントとターミナルサーバ間でのファイルをコピーして貼り付けることは出来ません。しかし、Windows 2000 Server リソースキットに含まれている Rdpclip ユーティリティ (Rdpclip.exe) を使用すれば、ターミナルサービスクライアントとターミナルサービスサーバ間でのファイルをコピーして貼り付ける事が出来ます。」

という記載がありました。

…と、別にいままでに Windows 2000 Server リソースキットを導入した記憶がないのですが…。とりあえず、Microsoft-> 309825 - [HOW TO] Windows 2000 のターミナル サーバーとターミナル サービス クライアントの間でファイルを安全にコピーして貼り付ける方法 にてそのあたりが紹介されていますけど、なにやらインストール自体もが面倒そうですね。

それにクライアントでも DLL の差し替えを行わなくてはならないらしく、Microsoft 社のダウンロードサイトで公開されている Terminal Service Advanced Client には対応していないとのこと…。

 

なにはともあれ何者かが勝手にインストールしたのかと思いつつも、他の Windows 2000 Server をのぞいてみてもちゃんと Rdpclip.exe は起動している様子でした。いつの日か標準で組み込まれるようになったのでしょうか。

なにはともあれとりあえずファイルのやり取りが出来るかどうか、コピー&ペーストの実験してみると、なにやらコピー元か先のファイルが見つからないとのことでエラーが発生してしまいました。遠いサーバだったから何か遮断されているのかと思いきや、ローカル同士でも同じエラーが発生してしまって失敗です。

 

もしかして、新しい Rdpclip に差し替えることでファイルのコピーにも対応する、ということなのでしょうか…。

Microsoft さまのサイトに書いてある Rdpclip.exe のバージョンは 5.0.2205.1。自分のところのは…、5.0.2174.4。とりあえずバージョン情報には違いがあるようですね。なので物は試しと、Rdpclip のインストール、というか差し替えをやってみようと思います。

 

あ、上記の公式サイトの引用の意味がわかったかも。

「標準でインストールされるターミナルサービスはターミナルサービスクライアントとターミナルサービスサーバ間でのファイルのコピー&ペーストはサポートしていません。しかし、Rdpclip ユーティリティを Windows 2000 Server リソースキットに含まれているものに差し替えることで、ターミナルサービスクライアントとターミナルサービスサーバ間でファイルをコピーして張り付けることが可能になります。」

という感じでしょうか^^

 

Rdpclip を差し替える (サーバ側)

Windows 2000 Server Resource Kit のインストール

まず、Windows 2000 Serer リソースキットをインストールします。

これはとりあえず Windows 2000 Server Home のリソースキットの項目にいろいろと説明があるようなのですけど、肝心のツールセットはダウンロードできるようになっているのでしょうか…。ぱっとみた感じ、一部のツールのみの公開、今回の Rdpclip に関しては Hotfix のみの提供という感じがします。

とりあえず自分の場合、幸いにも MSDN にてリソースキットが入手できていたのでそちらを利用しました。

インストール自体、ちゃんとインストーラが用意されているので難なくインストールすることができると思います。とりあえず選択肢はすべてディフォルト指定でインストールしてみました。

Rdpclip Hotfix のインストール

こちらは Rdpclip.exe File Copy からダウンロードすることが出来るようになっていました。ダウンロードした EXE ファイルを実行するとインストーラが起動しますので、手順どおりにインストール作業を進めれば完了です。

Rdpclip の差し替え

差し替えにあたって、とりあえず差し替えるプログラムのバージョンを確認します。なおこれらのツールは C:\Program Files\Resource Kit\ に保存されています。

Rdpclip.exe 5.0.2205.1
Fxfr.dll 5.0.2064.1
Rdpdr.dll 5.0.2205.1

このバージョンであることを確認したら、とりあえず、"Rdpclip.exe" のファイル名を "Fxrdpclp.exe" に変更します。そしてこの "Fxrdpclp.exe" と "Fxfr.dll" の2つのファイルを System32 フォルダ (一般に C:\Windows\System32\ ) へコピーします。

 

続いてレジストリエディタを使っての作業になります。レジストリエディタは一応危険なツールなので、編集作業を行う際には十分注意してください。

次のレジストリキーのなか (サブキー) の値を変更します。

\\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\

変更する箇所とその値は次のとおりです。

KEY 名前 [型] 変更前の値 変更後の値
AddIns\Clip Redirector\ Name [REG_SZ] RDPClip fxrdpclp
Wds\rdpwd\ StartupPrograms [REG_SZ] rdpclip fxrdpclp

これで差し替え作業は完了みたいです。バージョンの確認ではもうひとつ "Rdpdr.dll" も確認しているのですけどこちらはクライアント側の差し替えで使用するようです。

 

あとはサーバを再起動して差し替えたターミナルサービスを起動させます。

気になったのは再起動後、1回だけもう一度自動的に再起動してしまったことでしょうか…。幸い、2回目の起動で正常に動作しているような感じですけど、どこか失敗していないか気になるところです^^;;;

 

ターミナルサービスクライアントを差し替える

さて、今回のことを実現するにはクライアント側も更新しなくてはならないようなのですけど、さてさてどうしたものか…。

というのも、自分はクライアントコンピュータとして基本的に Windows XP Professional を利用しているのですけど、公式サイトによると、Windows 95/98/NT/2000 のターミナルサービスクライアントでの操作手順しか公開されていません。

考えかたによっては Windows XP Professional の方は特に差し替える必要はないともとらえられるのですけど、実際にやってみたところサーバ側を差し替える前と同様のエラーが表示されてしまいました。

 

サーバの差し替えの際にちょこっと不安有りだったのですけど、とりあえず、Windows 2000 Professional を使っての実験をまずはしてみようと思います。

なにはともあれ、個人的には Terminal Service Advanced Client を利用しているのですけど、これはサポート外というような記載があったのでまずは Windows 2000 Server からターミナルサービスクライアントのインストールディスクを作成しなくてはです。

Windows 2000 Server のターミナルサービスクライアントクリエイターをつかって、インストールフロッピー 2 枚を作成します。そしてそれをつかって Windows 2000 Professional へターミナルサービスクライアントをインストールしました。

 

インストールが終わったら続いて差し替えです。

差し替えるにあたってまずはターミナルサービスクライアントをインストールしたフォルダ内にある既存の RDPDR.DLL を Rdpdr.pss に名前を変更します。インストールフォルダは一般に "C:\Program Files\Terminal Services Client\" フォルダです。

名前の変更が終わったら、Windows 2000 Server リソースキット + Rdpclip Hotfix の "Fxfr.dll" と "Rdpdr.dll" の2つのファイルを、ターミナルサービスクライアントのインストールディレクトリへコピーします。

これで差し替え完了です。

 

接続してみる

さて、Windows 2000 Professional の差し替えたターミナルサービスクライアントをつかって、Windows 2000 Server の差し替えたターミナルサービスへ接続してみて、ファイルをコピーできるかどうか確認してみました。

サーバ側のファイルを [Ctrl]+C でコピーして、クライアント側のデスクトップ上で [Ctrl]+V でペーストしてみると、「Transfering files」 という名前のダイアログボックスが表示され、見事ファイルコピーが完了しました。クライアントからサーバへのコピーも問題なく行えました。

 

ただ、そのダイアログボックスにプログレスバーでもついていればよかったんですけどね^^ キャンセルボタンしかついていないため、コピーがどこまで進んでいるかがちょっとわからないのが残念です。また導入に少々手間がかかるのも難点ですね。

他、Terminal Service Advanced Client や Windows XP Professional 組み込みのクライアントを使っているととりあえず対応できないみたいなので、ちょっときわどい感じですけど、まあ、便利…かも。ちなみに MacOS X の Remote Desktop Connection 1.0.1 もコピーには対応していませんでした。

いや、でもたしかに Windows 2000 環境でさえあれば、組み込んでさえしまえば、ちょっとしたコピーをスムーズに行えるので非常に便利です^^