[リモートデスクトップ]マルチモニター環境でサブモニター側に綺麗に最大化する | 親鶏と酒とエンジニアリングと私

親鶏と酒とエンジニアリングと私

自分的に苦労したり新しいと思ったりGoogle先生が答えてくれない技術系の悩みについての解決策を模索していくブログです。

外部モニターをサブモニターとして接続(画面拡張)している環境でリモートデスクトップ接続をしたい場合のお話です。


メインモニター : 通常のデスクトップ画面
サブモニター : リモートデスクトップウィンドウを最大化したデスクトップ画面



といったように、モニター毎に異なるデスクトップの表示を行いたいといったケースはあると思います。


しかしながら、"リモートデスクトップ接続の設定画面から設定した場合"には、

「リモートデスクトップでのモニター解像度はメインモニターの解像度によって決定される」

といった悲しい仕様になっています。


よって、メインモニターとサブモニターで解像度が異なる場合、
サブモニター側でリモートデスクトップウィンドウ最大化すると

・上下にスクロールが発生してしまう
・上下に余白ができてしまう

といったように、綺麗に最大化されてくれません。


#このエントリを"探し当てた結果"読んでおられる方々には上記症状をよく理解していただけるかと思います。 
#ちなみに、そもそもサブモニター側で最大化がうまくできないという方は
リモートデスクトップウィンドウをサブモニターに持って行って「Ctrl+Alt+Break」
#で最大化自体はされると思います。



この解決方法があまりに掲載されていないので、ここで記載したいと思います。
#漁れば見つかることには見つかるのですが、直感的な書き方ではなかったので。  



- 手順 -

まず、リモートデスクトップ接続の設定画面からごく普通にrdpファイルを作ります。
接続先やローカルリソースなど、とりあえず接続したい情報でしっかりと設定を行うようにしてください。


次に、出来上がったrdpファイルをメモ帳やエディタで開きます。
ここからが重要です。


ファイルの中から

 screen mode id:i

という記述を探してその値を「2」に変更します。
※これは画面を最大化するのか、ウィンドウ表示するのかを示すプロパティです。2は最大化を表します。

結果的には

 screen mode id:i:2

となります。

同様にして

 desktopwidth:i
 desktopheight:i


という記述を探します。
※これはリモートデスクトップでのモニター解像度を表します。
※設定画面ではメインモニター解像度からの選択しかできませんが、実は 直接ファイルを開いてやれば好きな値に指定可能なのです。

例えばサブモニターの解像度が「1024x768」であれば

 desktopwidth:i:1024
 desktopheight:i:768

という風に設定します。

さらに

 winposstr:s

という記述を探します。
※これはリモートデスクトップウィンドウの初期表示位置と初期表示サイズを表します。
※前回の情報を記憶する仕組みなのか、設定画面では設定できない情報です。
※カンマ区切りで左から「0固定,1固定,ウィンドウ左端の位置,ウィンドウ上端の位置,ウィンドウの右端の位置,ウィンドウの下端の位置」です。

例えばメインモニターの解像度が「1200x900」、サブモニターの解像度が「1024x768」であれば

 winposstr:s:0,1,1200,0,2224,768

という風に設定します。
※補足すると、ここではサブモニターの左上からサブモニターの右下にかけてリモートデスクトップウィンドウが展開されるような設定を行っています。


あとはrdpファイルを上書き保存します。


このrpdファイルのダブルクリックで接続を開始してみるとご所望の結果が得られるはずです!!