T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« β1版は火曜日に公開!? | トップページ | 不具合修正を優先 »

新しいノウハウを獲得!

今は、Mirror-DTC Ver1.4.4の開発フェーズで、既に、Windows用はβ版を公開中だ。今日、macOS版と共にβ1版を公開する予定だったのだが、公開直前に問題を発見したので順延した。問題修正のために新しいノウハウを獲得した。

Mirror-DTCはリモートデスクトップソフトなのだが、特にWindows版は、様々なノウハウの塊になっている。

例えば、画面キャプチャーについては、Windows7の頃までは、普通に、BitBlt関数で取得出来ていたのだが、Windows8以降、BitBltでの画面キャプチャーは遅くなってしまった。

なので、どうしたものか、と、色々とネットの情報を検索していたら、Desktop Duplication APIというのが新たに実装されたらしかったので、それを使う画面キャプチャーに切り替えた。

また、音声キャプチャーについても、2000年代前半くらいまでは、PCに実装されている音声デバイスにオーディオミキサーというハードウェアが搭載されていて、マイク入力の代わりに、それを使えば、再生音声のキャプチャーが出来ていたのだが、その内、そんなデバイスが実装されていない音声デバイスが主流になった。

なので、どうしたものか、と、鑑みたのだが、WindowsXPについては、仮想サウンドデバイスを自製し、TiVSoundという名称で公開したのだが、それを使って、再生音声のループバックを可能にした。

Windows Vista以降については、一般人的には、セキュリティ確保の理由で、デバイスドライバを公開しても利用できくなされたので、別の手立てが必要になったのだが、Windows Vista以降では、CoreAudioという、macOSと同じ名称の新しいオーディオシステムが搭載された。

そのオーディオシステムを使えば、再生音声のループバックが可能になっていたので、作者的には、殆ど資料がないそのAPIを、ネットで色々と情報を検索しながら、使う事で、何とか、Windows Vista以降でも、音声のキャプチャーを可能にした。

更に言えば、Windows Vista以降では、ユーザーアカウント制御が導入され、デフォルト設定では、セキュリティ上、注意を喚起するタイミングでは、UACダイアログというダイアログが表示される様になった。

当時、このUACダイアログは、一般ソフトで制御する、どころか、画面キャプチャーする事は不可能! とまで言われていたので、作者的にも、Mirror-DTCを使う時には、UAC設定はOFFにして下さい! みたいに言っていた筈だ。

しかし、その後、色々と試したりしてみると、UACダイアログについても、それなりの権限があれば、画面キャプチャーどころか操作も可能である事が分かった。

なので、現行版のMirror-DTCでは、DTCServiceで利用する時には、デフォルトで、このUACダイアログについても、普通に画面キャプチャーされ、操作も可能にしてある。

更に、Mirror-DTCには簡易サーバーというモノも提供しているのだが、これは、少なくとも、全てのサーバー操作をMirror-DTC経由で行いたい場合には、DTCServiceを更新するためにアンインストール→インストールするタイミングで利用する必要があるからだ。

作者的にも、Ryzen 9 5900HXのミニPCは、ヘッドレス運用しているので、DTCServiceの更新時には、簡易サーバー経由でアクセスして、DTCServiceをアンインストールし、その後、新しいバージョンをインストールしている。

これは何を意味するのか、というと、簡易サーバーでも、管理者権限で起動すれば、前述のUACダイアログを操作可能にしている、という事になる。

実際の所、普通は、こんな事は出来ないのだが、それをできる様にしているのが、ノウハウ! と、作者的には呼んでいる訳だ。

と、いう事で、今日、新しく獲得したノウハウは、普通は、システム権限で起動されたプログラムは、ログオン中のユーザーのレジストリにアクセスするのは難しいのだが、その方法を確立した、という事になる。

やっている事は単純で、ユーザー権限で動作しているプログラムと通信し、ログオンユーザーのUserNameを取得し、後は、レジストリアクセス時に、そのUserNameから取得可能なSIDを使ってHKEY_USERSから必要なレジストリデータを取得する。

普通のユーザー権限プログラムの場合、同様のレジストリデータへのアクセス時には、HKEY_CURRENT_USERを使ってアクセスするのだが、システム権限で動作するMirror-DTCサーバーの場合、ここから得られるレジストリデータはシステム権限用なので、ログオンユーザーのデータにはアクセスできなかった訳だ。

その結果として、β1で追加した筈の、マウスポインタの拡大処理が動作しなかったので、簡易サーバーのシステム権限動作時とDTCServiceの動作時用に、それぞれ対応処理を追加する事になった訳だ。

と、いう事で、疲れてしまったので、今日の公開はなくなったのだが、既に、変更自体は完了しているので、多分、明日にはβ1版は公開する事になる筈だ。

ちなみに、トランスポーターの機能追加についても鑑みていたのだが、色々とアイデアが出てきた。

なので、Ver1.4.4の正式版では、トランスポーターについても、それなりに機能追加をしておく事になりそうなのだが、それらの機能を実装していると、まだ、2,3日はかかりそうだ。

このため、β1版については、トランスポーターの機能追加はない状態で公開し、その次のβ2か正式版で、トランスポーターについても、新たの機能を公開する事になる筈だ。

« β1版は火曜日に公開!? | トップページ | 不具合修正を優先 »

2024年5月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。

    ポリシーと規約 - Google