RDP Wrapper Libraryが突然使えなくなった！

# RDP Wrapper Libraryが突然使えなくなった！

[RDP Wrapper Library](https://github.com/stascorp/rdpwrap)はWindowsのHomeエディションでリモートデスクトップ(RDP)のホストをサポートさせることが出来ます[^how_to_install]。

[^how_to_install]: インストール方法は@aoi70さんが[Qiita記事](https://qiita.com/aoi70/items/47e521c6a310e3959b35 "RDP Wrapper Library のインストール")を投稿しています。Homeエディションでリモートデスクトップ接続したい人は是非インストールしてみてください。

Windowsアップデートしたタイミングで突然使えなくなりました。どうやらGitHubのissuesを見る限り、Windowsのアップデートで使えなくなってしまうことが多々あるようです。原因はWindowsのビルドバージョンごとに異なるようです。これをやれば解決する、と考えない方が良さそうです。自分が使えなくなった時の対処方法を記載していきます。

## 動作確認環境

* Windows 10 Home Edition 64bit

## バージョン番号およびビルド番号

### ビルド番号10.0.17134.706(KB4493464)

[GitHubのissues](https://github.com/stascorp/rdpwrap/issues/721)で解決方法が記載されています。「termsv.dll」を対応するバージョンに入れ変えて解決です。

動作しない状態で「RDPConf.exe」を実行すると下記画像の状態になっています。Lister stateで[not suppoerted]と表示されます。

![RDPConf.exe](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326185/eaf870c1-50e3-07cc-eeb5-6ec9935438a8.png "動作しない状態")

以下に修正方法を記載します。

1. 「コントロールパネル -> 管理ツール -> サービス」で「Remote Desktop Services」を停止する(関連サービスも停止するという旨のダイアログがポップしますので停止)
2. 「%windir%System32¥termsv.dll」を「termsv.dll.old.10.0.17134.706」などにリネームする[^mod_access_control]
3. 対応バージョンの「termsv.dll」を[上記のGitHubのissues](https://github.com/stascorp/rdpwrap/issues/721)からダウンロードする(分かり辛いですが探してください)
4. ダウンロードした「termsv.dll」を「%windir%System32」に移動する
5. OSを再起動する(「Remote Desktop Services」を開始させるため)

[^mod_access_control]: ファイルのアクセス権を変更する必要があります。わからない人はWindowsのアクセス権修正方法について[別記事](https://qiita.com/murashi/items/708acd6b37aaf46b4fec "Windowsでファイルのアクセス権変更")に投稿しています。

修正後に「RDPConf.exe」を実行すると下記画像の状態になります。Service stateのバージョン番号が「10.0.17134.1」となり、Listener stateは[fully supported]と表示されます。この状態で「RDPCheck.exe」を実行して接続確認してください。

![RDPConf.exe](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326185/5ab3755a-4df7-44b6-f348-bca9475f1cc7.png "修正後の状態")

### ビルド番号10.0.18362.267(KB4505903)

[GitHubのissues](https://github.com/stascorp/rdpwrap/issues/795)で解決方法が記載されています。設定ファイルを更新してくれるバッチファイルを作成した方がいます。詳細な説明は省きます。

1. 上記のIssueページから *rdpwrap_ini_updater_(02_August_2019).zip* をダウンロード。
2. uninstall.bat実行
3. install.bat実行
4. ダウンロードファイル展開後の「rdpwrap_ini_updater.bat」と「re-install.bat」を「%ProgramFiles%/RDP Wrapper」にコピー
5. セキュリティソフトの除外フォルダに「%ProgramFiles%/RDP Wrapper」を追加
6. 管理者権限で「re-install.bat」を実行

### ビルド番号10.0.18362.657

[GitHub](https://github.com/stascorp/rdpwrap/pull/859)でなんと自動更新するバッチファイルが公開されています。この記事はもはや用済みかもしれません。設定するとOS起動時に更新を行うようになるようです。
ただし、RDPWrapperインストールフォルダは *%ProgramFiles%\RDP Wrapper"* に限定されるようです。

1. 上記のIssueページから *autoupdate-v07.09.2019.zip* をダウンロード
2. RDPWrapperフォルダに、解凍後のファイル（helper）とフォルダ(autoupdate.bat)を配置
3. *autoupdate__enable_autorun_on_startup.bat* を管理者権限で実行（OS起動後のスケジューラに登録）
4. セキュリティソフトの除外フォルダに「%ProgramFiles%/RDP Wrapper」を追加
5. *autoupdate.bat* を管理者権限で実行

### ビルド番号10.0.19041.84

Preview Insider Buildで時期バージョンにしたところ、公式のRDPWrapperでの自動更新バッチファイルに対応していませんでした。[GitHub](https://github.com/stascorp/rdpwrap/issues/1022#issuecomment-596437997)のIssuesで解決方法が公開されています。公式ではないですが他の方が対応した設定ファイル(`rdpwrapper.ini`)がありましたので、その設定ファイルを自動更新バッチファイルに追記して解決しました。PCを再起動したら自動バッチファイルが実行されます。

```diff:autoupdate.bat
REM -----------------------------------------
REM Location of new/updated rdpwrap.ini files
REM -----------------------------------------
set rdpwrap_ini_update_github_1="https://raw.githubusercontent.com/asmtron/rdpwrap/master/res/rdpwrap.ini"
set rdpwrap_ini_update_github_2="https://raw.githubusercontent.com/saurav-biswas/rdpwrap-1/patch-1/res/rdpwrap.ini"
- REM set rdpwrap_ini_update_github_3="https://raw.githubusercontent.com/....Extra.3...."
+ set rdpwrap_ini_update_github_3="https://raw.githubusercontent.com/affinityv/INI-RDPWRAP/master/rdpwrap.ini"
```


## その他

RDP Wrapper Library関係で困ったこともまとめておきます。

<details>
<summary>インストーラでインストール失敗したのでアンインストールしようとしたが出来ない</summary>
[GitHubのissues](https://github.com/stascorp/rdpwrap/issues/377)で、Windows 10はインストーラに対応していない(2019/04/12時点)、という内容の記事がありました。インストーラを使用してインストールした場合、中途半端にインストールされ、コントロールパネルからアンインストール出来ない現象が発生します。
上記URLで投稿されていますが、Microsoftの公式アプリケーションを使用してアンインストールを完了させます。今回の事象に関わらず、お世話になりそうなアプリケーションです。 
https://support.microsoft.com/en-us/help/17588/windows-fix-problems-that-block-programs-being-installed-or-removed
</details>

## 参考

* https://github.com/stascorp/rdpwrap/issues/721
* https://github.com/stascorp/rdpwrap/issues/377
* https://github.com/stascorp/rdpwrap/issues/795
* https://github.com/stascorp/rdpwrap/pull/859
* https://github.com/stascorp/rdpwrap/issues/1022