[Win]リモートデスクトップで自分自身の別アカウントに接続する方法
2019/08/22
リモートデスクトップを複数アカウントから同時に接続するように設定する方法です。
PC自身の別アカウントをリモートデスクトップで見られるようになるので、別アカウントをちょっと参照したいときなどに便利ですよ!
※ Windows 10 April 2019 Update の情報を追加。
目次
自身に接続するメリット
Windowsで複数アカウントを使用している場合、ユーザーAを使っているときにちょっとだけユーザーB側で操作したいなんてことがあると思います。アクセス権限を設定したいとか、そっちでブラウザを開きたいとか、最近使ったファイルを見たいとか。
ファイルであれば管理者なら普通に参照できますし、プログラムの実行ならShift+右クリックで別ユーザーでの実行ができます。
ですが、実際にログオンして操作するにはログオン画面に戻って別ユーザーでログオンし直さなければいけません。そして作業が終わったらまた戻る。煩わしいですねぇ。
リモートデスクトップが使えたらいいのになぁ
こういうときにリモートデスクトップで別アカウントでログオンできたらいいのになぁと思うわけですよ。別にフルスクリーンで見られなくても、別ユーザーでちょっとだけ作業したい。
でもWindowsのリモートデスクトップは、別PCに接続することはできますが、自分自身に接続することはできません。それは通常のWindowsではセッション数(≒接続数)が1に制限されているからです。「接続する」「接続される」が合わせて1でなければいけないので、自分自身に接続すると「接続する」と「接続される」が同時に発生してセッション数オーバーになってしまうわけです。
Windows Home Server / Windows Server ではこの制限が無いそうなので、自分自身への接続が可能です。よし、通常版のWindowsでもこの制限を吹き飛ばそう!
DLLファイルの書き換え
※ 使っているWindowsのバージョンやエディションによっては、Microsoftのライセンス規約違反になる可能性があります。この記事は技術的な解説であって、実行は自己責任でお願いします。
C:\Windows\System32 にある「termsrv.dll」というファイルを書き換えることで、セッション数の制限を無くします。
バックアップ
まずは念のため termsrv.dll をバックアップしておきましょう。
C:\Windows\System32 を開いて、termsrv.dll を複製します。複製したファイルは「termsrv.dll.backup」などとしておきましょう。
ファイルの編集
System32 にあるままではファイルの編集ができないので、まず termsrv.dll をデスクトップにコピーします(移動はできないはずです)。
デスクトップの termsrv.dll をバイナリエディタで開いて、以下のように変更します。バイナリエディタは何でもいいです。私はだいたいStirlingを使っていますね。
コレ見てなんのこっちゃさっぱりな人はここで諦めた方がいいと思います。下手にどっかから編集済みをダウンロードすると危険です。
Windowsバージョン | 変更内容 |
---|---|
Windows 10 April 2019 Update (2019/04; ver1903) |
39 81 3C 06 00 00 0F 84 3B 2B 01 00 ↓ B8 00 01 00 00 89 81 38 06 00 00 90 |
Windows 10 October 2018 Update 64bit (2018/09; ver1809) |
39 81 3C 06 00 00 0F 84 7F 2C 01 00 ↓ B8 00 01 00 00 89 81 38 06 00 00 90 |
Windows 10 April 2018 Update 64bit (2018/03; ver1803) |
8B 99 3C 06 00 00 8B B9 38 06 00 00 ↓ B8 00 01 00 00 89 81 38 06 00 00 90 |
Windows 10 Fall Creators Update 64bit (2017/10; ver1709) |
39 81 3C 06 00 00 0F 84 B1 7D 02 00 ↓ B8 00 01 00 00 89 81 38 06 00 00 90 |
Windows 10 Creators Update 64bit (2017/03; ver1703) |
39 81 3C 06 00 00 0F 84 53 71 02 00 ↓ B8 00 01 00 00 89 81 38 06 00 00 90 |
Windows 10 Anniversary Update 64bit (2016/08; ver1607) |
39 81 3C 06 00 00 0F 84 D3 DE 02 00 ↓ B8 00 01 00 00 89 81 38 06 00 00 90 |
Windows 10 TH2 64bit (2015/11; ver1511) |
39 81 3C 06 00 00 0F 84 3F 42 02 00 ↓ B8 00 01 00 00 89 81 38 06 00 00 90 |
Windows 10 64bit (2015/08; ver1507) |
39 81 3C 06 00 00 0F 84 73 42 02 00 ↓ B8 00 01 00 00 89 81 38 06 00 00 90 |
Windows 8.1 64bit (6.3.9600.17415) |
39 81 3C 06 00 00 0F 84 D3 1E 02 00 ↓ B8 00 01 00 00 89 81 38 06 00 00 90 |
Windows 8.1 64bit (6.3.9600.17095) |
39 81 3C 06 00 00 0F 84 9E 31 05 00 ↓ B8 00 01 00 00 89 81 38 06 00 00 90 |
Windows 8.1 64bit (6.3.9600.16384) |
8B 81 38 06 00 00 39 81 3C 06 00 00 0F 84 1B 70 00 00 ↓ B8 00 01 00 00 89 81 38 06 00 00 90 90 90 90 90 90 90 |
Windows 8.1 32bit (6.3.9600.16384) |
3B 81 20 03 00 00 0F 84 2A D5 00 00 ↓ B8 00 01 00 00 89 81 20 03 00 00 90 |
こんな感じに編集します。
他のOSやバージョンアップがあった場合は、「RDP multiple sessions」あたりのワードで検索してみてください。海外サイトが見つかるかと思います。
デスクトップに置いた termsrv.dll を変更したら、上書き保存します。
ファイル権限の変更
あとは編集したファイルを System32 に戻せば完了なのですが、そのままではファイルを上書きすることができません。termsrv.dll を変更する権限が無いからです。
変更する権限が無ければ、変更できるように変えてしまいましょう。
System32 の termsrv.dll を右クリックしてプロパティを開きます。セキュリティタブの「詳細設定」を押します。
所有者の「変更」を押して、オブジェクト名に「Administrators」と入力してOKを押します。sを忘れないように。
一旦すべてのプロパティウィンドウをOKで閉じます。こんな警告が出るかもしれませんが正常です。
もう一度プロパティ→セキュリティ→詳細設定と開いて、「アクセス許可の変更」を押し、「追加」を押します。プリンシパルの選択を押して、オブジェクトに「Everyone」と入力してOKを押します。
「フル コントロール」にチェックを入れてOKを押します。
プロパティウィンドウをOKですべて閉じます。下のような警告が出たら「はい」を押します。
ファイルの上書き
デスクトップにある termsrv.dll を System32 の termsrv.dll に上書きコピーします。権限の変更がうまくできていれば上書きできると思います。エラーが表示される場合は権限の設定を見直してみてください。
ファイルが使用中になっている場合は、タスクマネージャーのサービスタブでTermServiceの停止を試してみてください。タスクマネージャーから停止できない場合は、サービスを開いて「Remote Desktop Services」を停止してください。
ファイル権限を元に戻す
最後に System32 の termsrv.dll のアクセス権限を元に戻します。
プロパティ→セキュリティ→詳細設定を開いて、Everyoneを削除します。所有者は「NT SERVICE\TrustedInstaller」と入力すると「TrustedInstaller」に戻せます。
再起動不要で反映されるはずです。サービスを停止した場合は再開(サービスの再起動)してください。
自分自身にアクセスできるようになった
この変更をすることで、自分自身にアクセスできるようになります。
アクセスする際は、リモートデスクトップの接続先として「127.0.0.x」(x は 2~255 のいずれでも良い)と入力します。自分自身とは言ってもログオン中のアカウントに二重ログオンはできないので、そのPCの他のアカウントに接続します。
これで、あるユーザーでログオンしながらも、リモートデスクトップウィンドウ内では別ユーザーでログオンした状態を表示することができるようになりました。
再接続できないとき
切断した後に再接続しようとすると「このユーザーアカウントはリモートログインを許可されていないため、接続は拒否されました」と表示されることがあります。
このときは接続先アドレスの末尾の数字を変えてみてください。「127.0.0.2」→「127.0.0.3」などです。パスワードを再度聞かれることになりますが、接続できるはずです。
まとめ
バイナリ変更という少々強引な方法ではありましたが、目的を達成することができました。
こんな簡単に変更できちゃっていいのかよという気もしますが、DLLファイルの変更が若干手間ではあるので、それがPC初心者に対する丁度いい障壁になっているんですかね。いや、こういう作業ができない人はリモートデスクトップで自分自身に接続するなんて考えつかないでしょうかね……。
ユーザーを複数作って運用している人はかなり便利になると思いますよ!