リモートデスクトップで誰かがログインしていないかチェックしたい

8月 29, 2021

DOSで query user と入力

LAN内で、Windowsのリモートデスクトップ機能を使って遠隔のPCを使うケースで、誰かが使っているか聞いてからログインしないと急に奪われる形になります。
そこで、事前に誰かがリモートでログインしているかどうかを調査する方法はないかなと調べてみたところDOSコマンドで解決しました。

query user /server:ここにサーバーの名前

下のスクショの様に、セッション名のところにrdp○○○○があれば誰かが使っています。
誰もリモートで入っていない場合はセッション名がブランクになります(水色)
誰かがリモートで入っている場合は、rdp○○○○に値が入ります(黄色)
これで事前に判るということですね。バッチファイルとか作っておくと便利です。

普通にやっても出来ない

と、やり方が分かったところで、普通にコマンドを入力しても「エラー 5 アクセスが拒否されました」という、何がどうダメなのか判らないエラーで終わります。

私の職場はワークグループ環境なのでドメイン環境の場合はまた別なのかもしれませんが、ネットで探せる情報をそのままやっても私の職場環境では上記のエラーで出来ませんでした。
事前に、リモート操作される側のPCへの資格情報を操作する側で保持しておく必要があるようです。

うまくいったやり方を載せておきます。

Windows 資格情報の登録

下の「Windows 資格情報」の中に対象のパソコンの資格情報があれば出来るようです。
但しAdministrator権限でないとダメだと思います。
ちなみに、TERMSRV/○○○○というのは、リモートデスクトップの資格情報なのでそれは合っても無くても関係ないです。Windowsそのもののログインユーザー情報が保持されている必要があります。

一覧に無い場合は、下記スクショの右側の「Windows 資格情報の追加」から、リモート制御するパソコン名(またはIP)、ユーザー、パスワードを登録してから、DOSコマンドを試してみて下さい。

ダメだったやり方

せっかくなので、意味なかった設定も載せておきます。

リモートUACを無効にする(⇒意味なかった)

自PCでDOSコマンドを打つときも、UACによりエラー5が発生するみたいなので、そっちかと思って調べると、「リモート UAC」という制御機能が働いているそうでそれを無効にする方法があったので試したが、結果変わりませんでした。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
LocalAccountTokenFilterPolicy 「DWORD (32 ビット)」 追加して 値を1に設定。

RPC接続を有効にする(⇒意味なかった)

リモート・デスクトップ・セッションに対するRPC接続を有効にするレジストリというのがあるらしく、それを設定してみましたが、結果変わらず。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer
AllowRemoteRPC の値を1に設定。