MacOSのRDP設定ファイルはどこにある?(Windows.App)

まったく、RDPクライアントがWindows.Appだなんて!とんでもないアプリ名に変えてくれたもんだMicrosoftめ。関連情報がキーワード検索しにくくって仕方がない。

普段MacOSを使っていると、あまりアプリの動作に関係するような情報に深入りしようという気にならないせいか、Windows.AppがRDP接続先の情報をどこのフォルダに格納しているのか意識することもない。

でも、今回ちょっとだけその情報に触れてみたい事があったので探してみることにした。

RDP接続アプリのWindows Appアイコン

■設定ファイルの保存場所は

答えから言うと、

設定ファイルの格納場所は:
~/Library/Containers/com.microsoft.rdc.macos/Data/Library/Preferences/com.microsoft.rdc.macos.plist

セッションファイルの格納場所は:
~/Library/Containers/com.microsoft.rdc.macos/Data/Library/Application Support/com.microsoft.rdc.macos

のなかに存在するようではある。
※”macos”のほか”mac”となっているフォルダやファイルも存在する場合があるので更新日時でどれが新しいものか判断する必要がある

ただ残念なことに、プレーンテキストで保存されていることを期待したのだけれどどうやらSQLiteであるようだ。なので下手に手を加えてしまうことは避けたほうが、みずからトラブルを招き込まずに平和に過ごせることだろう

■sqliteを直接見てみる

それでもやはり目の前のファイルの中身をのぞき見してみたい衝動には駆られる。

CLIからだと sqlite3がインストールされていることが前提だけれど、

% sqlite3 “~/Library/Containers/com.microsoft.rdc.macos/Data/Library/Application Support/com.microsoft.rdc.macos/com.microsoft.rdc.application-data.sqlite”

とすることで、保存してある接続先のデータベースに潜り込める。

ここからはsqlite3のコマンド操作になるが、

sqlite> .tables

と入力するとテーブル一覧が参照でき、手っ取り早く

sqlite> SELECT * FROM ZBOOKMARKENTITY;

とすると、保存されている接続先とそのパラメタ一覧が画面いっぱいに表示される。

まーいろんな値が格納されていること!と思いながら眺めるのもよし。

RDP接続先一覧

■修正方法は

さて、今回修正しておきたいパラメタはたったの1つ。

とある接続先の connection type:i:1 となっている部分を connection type:i:6 あるいは 7と書き換えたいのみ。

そのためにまず調べるのがテーブル構造。

sqlite> .schema ZBOOKMARKENTITY

で確認すると、とりあえずキー項目と人間が読んで判断できそうなホスト名らしき項目があるので、

sqlite> SELECT Z_PK, ZHOSTNAME FROM ZBOOKMARKENTITY;

とすることで一意のIDとそのホスト名やIPアドレスが表示される。

だけれど、フィールド名を眺めてみても直接RDPのパラメタを保持しているようなフィールドは見当たらず・・・

sqlite> SELECT Z_PK, ZHOSTNAME, ZRDPSTRING FROM ZBOOKMARKENTITY WHERE Z_PK=18; ※一覧から得たID

と試してみると、嫌なことに修正したい値を含めたRDPのパラメタ値が文字列としてだらだらと格納されていた

sqliteって直接文字列を操作したりできるのかなー?と不安に思いつつも、

sqlite> UPDATE ZBOOKMARKENTITY SET ZRDPSTRING = REPLACE(ZRDPSTRING, ‘connection type:i:1’, ‘connection type:i:7’) WHERE Z_PK=18;

と入力し、反映されているかどうか確認すると無事にパラメタが書き換わっていた。

試しにRDP接続してみると、無事に修正した設定が反映されていたので書き換えポイントは間違っていなかったようだ。

最後は

sqlite> .exit

としてデータベースを閉じておくことを忘れないように。

■データベース操作に慣れてないと

私自身もデータベース操作に慣れているかと問われると、どちらかといえば苦手なほうと答える入門者レベル。

データベース操作はちょっと間違ってしまっただけでも全体を壊すことに繋がりかねないので、安全のためには触れないほうが良いでしょう。

どうしてもパラメタを書き換えたい場合には、

・Connections – Export to RDP file…を選んでファイルに書き出し
・書き出したファイル内をテキストエディタで編集
・再びInport from RDP file…

といった手順を踏むのが安全だしわかりやすいでしょう。直接書き換えちゃったほうが楽じゃないかと思ってたんですが、これじゃあどっちが手間なのかよくわからないくらいの差ですね。


安心安全安価なSDカードデータ復元・HDDデータ復元は
長年の信頼と実績の『株式会社パソコントラブル救助隊』へ。
https://hqsecure.net/

xrdpでカーソルキーがエンターと誤入力される件

なにやら、Linux端末からxrdpサーバーへ接続してみるとキーの反応がおかしい。

アプリケーションによってはカーソルキーの「↓」を押すとEnterキーが押されたことになってしまう様子。使用するアプリによってはかなりメンドクサイかもしれない。
※正確にはNumericEnterでテンキー側のエンターキーと認識されてる

key-event-viewerの出力結果

https://w3c.github.io/uievents/tools/key-event-viewer.html

■develop版のxrdpに変えて解決

現象を確認したのは xrdp v0.10.1でしたが、どうやらその先のv0.10.2でも解消されていないようで急遽develop版に差し替えてみることに。

サーバーにはv0.10.1をインストールした時の名残があるので

git switch –

でdevelopになっていることを確認してから

git pull

けっこう激しく変更があったようで、ダウンロードに少し時間がかかっていた。

pull後は

./bootstrap
./configure –enable-fuse –enable-mp3lame –enable-pixman
make
sudo make install

と、いつも通りの手順でインストール完了。xrdpxorgも忘れずに同じ要領で。

念のためにバージョンを確認すると v0.10.80 となっていた。

サーバーをrebootし、再起動後は無事に「↓」がArrowDownと認識されるようになりメデタシメデタシ。なんのことはない単純なバグが残っていたのだね。

key-event-viewerで正常に戻った結果

■しかしMacBookでは「_」が入らない

ここで新たな罠が。

Windows端末からログインする分にはなんの問題もなくなったのだけれど、MacOS端末からログインするとアンダースコア「_」が入らない

そのほかにも記号が刻印とずいぶんズレてしまう。

いったい誰が悪いんだろう?RDPに使っているWindowsAppが悪さしているのか?

■なぜかusキー判定

なかなか深みにはまっていってる予感。

ひとまず自分の端末がどんな値を送ってきているのか調べてみる。

sudo cat /var/log/xrdp.log

すると、直近の接続では keyboard_type=4, keyboard_subtype=0, keylayout=0x00000000 と!

私のはそんなこだわりもなく日本市場のMacBookで日本語キーボード。それなのに0x00000000が送信されていることで、受信した側のxrdpではusキー端末がログインしてきたと判定されているっぽい。

■キーボードレイアウト設定が変?

xrdpの設定なんか触れたことないぞ、とブツブツつぶやきながら設定を覗いてみると /etc/xrdp/xrdp_keyboard.ini なんてファイルがある。

でもこのファイル、中身をみても何を定義したいのだか理解しがたい構造。

あれこれ試してみてようやく、キーボードタイプやレイアウトの値を受け取って、最終的にキー配列が 「jp」 とか 「us」 とかいった値を導きだす目的のものなのかとひとまず理解した。

■本来はkm-00000406?

超絶詳しい方に聞いてみたところ、本来はMacOS(日本語キー)では0x00000406が送られてくるものらしい。でも私のはなぜか0x00000000しか出してこない。
※たまにそういうMacOS機がいるらしいとか。

そして、0x00000000を受け取ったxrdp側は、xrdp_keyboard.iniの設定に書かれている通り0x00000000に合致するものはusキーだと値を返してくるし、異なったキーマップなので日本語キーボードの刻印とはちがった記号が入力されてしまうということらしい。

ならば多少強引だけれども、/etc/xrdp/km-00000406.ini をコピーして km-00000000.iniとして置き換えてみたらどうかと試行すると、ある程度はちゃんと動作する。

でも、アンダースコアが”=”になったり、まったくなにも出なかったり。わりと困る。

■キーマップを作り直す

もういちどxrdp.logを見てみると、こんどはkm-00000000.tomlが存在しないという記録が残っていた。たしかにそんなファイルは存在しない。

キーマップってkm-????????.iniじゃないのか?と思って調べてみると確かにkm-????????.tomlも在るようで、ちょっと書式が違って人間がわかりやすい書き方である、という説明もあるものの大差ない気もするなあ。

特に今回はkm-00000000.iniを用意していたにもかかわらずログにはkm-00000000.tomlが無いと要求されているので、やむなく手探り状態でキーマップを作ってみることに。

キーマップを作製するコマンドがあるようなので以下を試してみる。

xrdp-genkeymap km-00000000.toml

これで作成されたkm-00000000.tomi を /etc/xrdp/以下に配置し、rdp接続しなおすことでキーマップが見つからないよ!っていうログは出なくなった。

しかも、ちゃんとアンダースコアが入力できるようになっているではないか(^^)素晴らしい

■とりあえずはOKとして…

当面はこれで問題なしとして、まだちょっとこだわらないといけないポイントがありそう。

と思っていたら「¥」はどこに行ったのだろうとか「\」(←環境によっては¥表示かな)はどうやって出すんだ?とかいった問題があることに気づいてしまった。

もともと私のMacBookのキーボードでは右下「ろ」にあたる位置にはバックスラッシュの割り当てがないので見逃していて、シフトキーを押しても押さなくても「_」が出るじゃないかサービス満点なキーマップだな、などと呑気なことを考えていた。

しかし本当に世の中にはキーボードの種類が多すぎる。言語がいくつもあるのだから仕方ないにしても、同じ言語圏でいくつもあるのは勘弁してほしい。
※以前ロシア語を学んでいた時もキリル文字のキーボード多いなと思ったものだが

■なんだかんだでキーマップを複製

あれこれと設定を試してみていると、どうも jp レイアウトと判定されることにこだわる必要性は低そうで、us 判定のままでも問題ない感じ。

ならば、レイアウトはwindows端末が送信してくるものを複製しちゃおう、と
km-00000411.toml を km-00000000.toml として複製

なんとなくそれだけで大丈夫そうではあるけれど、念のために xrdp_keybboard.ini にも追記。内容はMacではなくWindowsにあわせちゃう。

[rdp_layout_mac_jp]
keyboard_type=4
keyboard_subtype=0
rdp_layouts=default_rdp_layouts
layouts_map=default_layouts_map

いざ、接続してみるとちゃんと「¥」が出る!「_」も出る。そのほかの記号もちゃんと刻印通りに出ている、素晴らしい(^^)

あとはこれで、他のキー配列の端末が同じ0x00000000を送ってこないことを祈るばかり。


安心安全安価なSDカードデータ復元・HDDデータ復元は
長年の信頼と実績の『株式会社パソコントラブル救助隊』へ。
https://hqsecure.net/

Dreamweaverの動作保証はMacOS11.0まで

なんだかんだでバグだろうっていう不審な動作の多いAdobe Dreamweaverですが、先日の「DreamweaverでGitする」の記事で構築した通りGitをDreamweaverから直接活用する方向での設定を済ませたのですね。

ところが、みごとに高確率でとんでもない不具合にあたることに。

■Git応答という空のダイアログが

その不具合の内容ですが「Git 応答」というタイトルの空のダイアログがPUSHが成功したあとに表示されてしまい、もとのウインドウの操作の一切を阻んでしまうという症状に陥るもの。

上のは正常にpushが済んだ際に表示されるダイアログですが、これをOKして閉じたあとに次のようなダイアログが出てきてしまいます。

これにはOKボタンもなにも存在せず、ESCを押そうが他のウインドウを選択しようがこのダイアログを閉じることができないため、完全に操作不能という状態に陥ります

こうなると、特定のプロセスをキルして乗り切ろうと考えても見当たらず、やむなくアクティビティモニタからDreamweaverのプロセスを強制終了させて閉じるしかありません(当然ながら未保存のデータは失われます)

■Adobeサポートに問い合わせ

せっかくサブスク契約しているわけですし、先日からその料金も上がったわけですし、こういうトラブルのときこそサポートを活用しないともったいない

というわけでAdobeさんのWEBサイトからチャットサポートで相談してみました。

相談したところ、まず1つめに衝撃の回答が「Dreamweaver21.3(問い合わせ時最新版)はMacOS10.14~MacOS11.0までしか動作保証していない」

おいおい、MacOS11ってBig Surじゃないか。何年前のバージョンだよ。いまやMacOSは14系統が主流だし、わたしのアップデートから置いていかれたMacBookですら13.6.3(Ventura)だと言うのに

どうやらDreamweaverは最新のOSをサポートするつもりは無いのか4年ほど前から時が止まっているらしい(愚痴)サブスクなのに

いつまで経っても入力した文字が勝手に消えたり入力していない文字に置き換わったりする面倒なバグが放置されているわけだわ。

■結論、DWでGitは使えん

そして2つめの衝撃は、サポートに提示された対処法を試しているとき。環境設定でGitパスをちゃんと(動作していた)設定にしているにもかかわらずGitが無いとか警告されるように(笑)

もうぐちゃぐちゃですね、これはちょっと毎月課金されているツールとしては酷い。ベータ版とか書いてないよな。

とはいえ、DreamweaverはGitさえ使わなければHTML・CSSの編集には強力なツールであることには違い無いので使い続けるわけなのですが(どのみちターミナルからコマンド操作しますしね)

■Gitの設定を解除しようとしたら

というわけで3つめの衝撃。

動かない機能を有効にしていると仕事の邪魔になるだけなので、サイト管理からGit関連付けを解除しようとしたら、そもそもチェックボックスがグレーアウトしていて解除できない(ポップアップでGitに関連づけられていると表示されるのみ)

こうなるともう、新規サイトとして設定を新たに作り直すしか解決策がなさそうです。

どうもAdobeさんの設計思想なのか、こういった後戻り操作をさせてくれないことが多いように思いますね(Macromediaのときはそんなにややこしく感じなかったのに)

というわけでDreamweaverから直接のGit連携はたった2日で断念することにしたのでした(私の環境だけの問題かもしれないですので参考程度に)


消えちゃった動画や写真データの復元は
安心安全な『株式会社パソコントラブル救助隊』へ。
https://hqsecure.net/