RDP Wrapperでリモートデスクトップできないときの対処法 【Win10 Home】
※ 対応バージョンの注意
この解決方法は以下のWindows10のバージョンまでしか対応できません。
- Edition : Windows10 Home
- Version : 1809
- OS build : 17763.379(10.0.17763.379)
バージョンの確認方法は、キーボードのWindowsボタン(窓アイコン) + s
と打ちabout
と検索すると確認することができます。
あるいはWindows のバージョン確認方法のようにWindowsボタン(窓アイコン) + r
→ winver
で検索する方法もあります。
2019.4月現在、最新であるOS build : 17763.437
に対する対処法はまだないようです。残念ながら公式Githubを観察するしかなさそうです。
MacからWindowsをリモート操作する
Macや他のWindows機を使ってWindows機を操作する方法としてRemote Desktopがあります。
これはWindows10 Pro
などではデフォルトで使用できるのですが、Windows10 Home
では利用できません。
そこでRDP Wrapper Library v1.6.2
を用いてリモートデスクトップを実現します。
ここではRDP Wrapperが使えず、エラーが起きた際に私がとった対処法を書きたいと思います。
まずはインストールや設定など。
RDP Wrapperのインストール
インストールは公式GithubのReleasesの最新版をインストールします。
インストールの仕方などは以下のサイトが参考になります。
素直にそのままやればインストールはできるはずです。
そして全然解決できないエラー
数ヶ月前までは普通に使えていたのですが、突然接続した際にエラーが出るようになりました。
実際のエラー画面が以下のようになります。
対処法を模索する
そこでWindows10側にインストールしたRDP Wrapperの設定画面を確認してみます。
まずはダウンロードしたRDP Wrapperのフォルダを開きRDPConf.exe
ファイルを実行します。
すると管理者権限の承認画面のあとに以下のような画面が現れます。
この画像を見る通り、Listener state
の部分がNot listening [not supported]となっていました。
人によってはlistening [not supported]やNot listening [fully suppoted]となっているようです。
いずれにせよ、ほとんどの場合でListener state
の部分がlistening [fully suppoted]とならない限りは接続することはできないようです。
これについて公式Githubのissuesを確認して見ると解決方法について議論されていました。
ここでの会話から以下のことがわかりました。
- Windows updateにより、
termsrv.dll
がアップデートされた - それに伴い、
rdpwrap.ini
を更新しなければならない - RDP warpperのアップデートが来るまでは自分で
rdpwrap.ini
を変更する必要がある。
さて、解決方法は分かったのであとは修正するだけです。
対処法
対処法はシンプルで、rdpwrap.ini
を書き換えるだけです。
rdpwrap.ini
を確認する
rdpwrap.ini
を開くために、windows + r
→ C:¥Program Files¥RDP Wrapper
と入力してOK
します。
それか、Cドライブ直下のProgram FilesフォルダにあるRDP Wrapperを開きます。
するとrdpwrap.ini
とtermsrv.dll
ファイルがあることが確認できるはずです。
ここでrdpwrap.ini
を書き換えるので念のためコピーを保存して起きます。
テキストエディタを管理者権限で開く
お使いのテキストエディタを管理者権限で開いてください。
普通のメモ帳でも構いません。そしてrdpwrap.ini
を開きます。
中身を書き換える
変更箇所は2箇所あります。
まず始めに3058行目
あたりにジャンプするか、[SLInit]
と検索します。
すると、以下のように書かれていると思います。
[10.0.17763.1] LocalOnlyPatch.x86=1 . . // 中略 . SLInitFunc.x64=New_CSLQuery_Initialize [SLInit] . . .
この[SLInit]の前に以下の文を挿入します。
必ず前後にあるSLInitFunc.x64=New_CSLQuery_Initialize
と[SLInit]
から1行ずつ離してください。
[10.0.17763.292] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AFAD4 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=77A11 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=4D665 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1322C SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=4BE69 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=17F45 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=5B18A SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=1ABFC SLInitFunc.x64=New_CSLQuery_Initialize
そしてこのファイルの末尾に以下の文を挿入します。
これも前のコードから1行必ず開けるようにしてください。
[10.0.17763.292-SLInit] bInitialized.x86 =CD798 bServerSku.x86 =CD79C lMaxUserSessions.x86 =CD7A0 bAppServerAllowed.x86 =CD7A8 bRemoteConnAllowed.x86=CD7AC bMultimonAllowed.x86 =CD7B0 ulMaxDebugSessions.x86=CD7B4 bFUSEnabled.x86 =CD7B8 bInitialized.x64 =ECAB0 bServerSku.x64 =ECAB4 lMaxUserSessions.x64 =ECAB8 bAppServerAllowed.x64 =ECAC0 bRemoteConnAllowed.x64=ECAC4 bMultimonAllowed.x64 =ECAC8 ulMaxDebugSessions.x64=ECACC bFUSEnabled.x64 =ECAD0
これでrdpwrap.ini
の変更は完了です。
再起動して再チャレンジ
PCを再起動して再びRDPConf.exe
ファイルを実行します。
すると......
Listener state
の部分がlistening [fully suppoted]となっているはずです。
これで再びMacからRemote desktopを実行すると見事に接続することができるようになりました。
めでたしめでたし。