スポンサーリンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 基本は管理者権限で起動 | トップページ | まだ、混沌としている »

二度手間とはこのこと

今は、Windows向けソフトである所のTiTrayExtenderの開発に戻っているのだが、このプログラムは、主要なコードが出来た所で、別作業を割り込ませた結果、開発作業が二度手間になっている感じだ。

昨日書いた様に、TiTrayExtenderは、管理者権限で起動しないと本当の実力は発揮できないのだが、Windowsでは、管理者権限は、かなりの特権、という感じになっているので、普通のアプリケーションソフトであるにも関わらず、管理者権限で起動しなければならない、なんて事になると、そのソフトはマルウェアなんじゃないか? と、疑われる可能性もある。

なので、TiTrayExtenderは、通常のユーザー権限で起動しても、他に管理者権限で起動されているソフトがなければ、普通に使える様にもしてあるのだが、これはつまり、管理者権限で起動された場合と、起動されなかった場合用に、内部処理は分かれている事を意味する。

まあ、論理的には、上記の表現は間違っているのだが、最近の日本における様々なニュースだとかネットの書き込みなんかは、上記以上に、非論理的なので、上記の様な表現を見ても、何ら不思議には思わない人も増えたかもしれないので、上記の様な表現を使ってみた訳だ。

実際の所としては、Windowsアプリは、ユーザー権限で起動されても、管理者権限で起動されても、アプリケーションソフトのコードは同じでも構わないのだが、TiTrayExtenderの場合、管理者権限で起動された場合、ユーザー権限の別プロセスを起動する格好になっている。

で、上記の様なコードは、ユーザー権限で起動された場合には、動作不可になるので、必然的に、TiTrayExtenderでは、管理者権限で起動された場合と、ユーザー権限で起動された場合では、別のコードが動作する様になっているのだが、管理者権限で起動された場合に、ユーザー権限のプロセスを起動するのは、殆どの作業は、そのユーザー権限のプロセスで行わせる事にしてあるからだ。

その理由は、管理者権限で起動されたアプリは、デスクトップやエクスプローラーからのドラッグ&ドロップなんかが行えなくなるからなのだが、それでは、何故、TiTrayExtenderは管理者権限のプロセスを必要としているのか、というと、ショートカット用にキー入力をHookする必要があるからだ。

つまり、他に管理者権限で動作しているアプリがデスクトップ上に存在していても、キー入力をHook可能とするために、TiTrayExtenderは、管理者権限プロセスを必要としていて、それ以外の機能については、ユーザープロセスで動作させておいた方が何かと便利な訳だ。

と、言う事なので、TiTrayExtenderは、管理者権限で起動された場合には、ユーザー権限で動作する自らのコピーインスタンスを起動し、管理者権限で起動されたインスタンスについては、キー入力のHook作業に専念し、ユーザー権限で起動したコピーインスタンスに対してサービスを提供する格好にしてある訳だ。

しかし、前述の様に、単なるユーティリティソフトを、管理者権限で起動する事に抵抗を感じる人もいる筈なので、TiTrayExtenderは通常のユーザー権限で起動する事も可能にしてあって、この場合には、当然の事ながら、管理者権限で動作するキー入力Hook用の別プロセスは存在させない。

となると、管理者権限で起動された場合と、ユーザー権限で起動された場合では、キー入力のhook処理が根本的に異なる事になるのだが、内部処理的には、開発作業量を鑑みれば、それほど大掛かりな違いは持たせたくない訳だ。

なので、管理者権限で起動された場合には、プロセス間通信、ユーザー権限で起動された場合には、スレッド間通信、みたいな感じで、内部処理形態は分けつつも、プログラム内のインタフェース的には、同じ様な通信形態を採れる様にしてある。

と、言う事で、いずれにしても、TiTrayExtenderの内部構造は、結構、複雑になっているのだが、この様な形態で実装が行える事は、かなり前の時点で確認済みだった。

しかし、処理コード自体は、完成させていなかったので、今は、上記の様な構造を利用しつつ、実際の処理コードの実装を進めているのだが、上記の構造に問題がない、という確認は、かなり前に行ったので、今現在の作者的には、本当に問題がないのか? と、半信半疑だったりしている訳だ。

その結果として、コードの実装時には、多分、かなり前に一度行った事がある筈の動作確認を、また、行ったりしているので、開発作業の進展は遅い訳だ。

と、言う事なので、TiTrayExtenderについては、確認作業が、二度手間な感じになっているのだが、公開済みのプログラムなら兎も角として、開発途中のコードというのは、作者的には、あまり信用が出来ないので、ここで、再度、確認しつつの開発になるのも致し方ない所ではある。

そういう事にならない様にしたければ、開発の途中で、時間を置いたりしない事が重要になったりもするので、複雑な処理が必要なプログラムについては、あまり大風呂敷は広げずに、単純な状態で公開してしまい、そこから、徐々に進化させて行くのが良いのかもしれない。

« 基本は管理者権限で起動 | トップページ | まだ、混沌としている »

2020年9月
    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      

広告

プライバシーポリシー

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

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

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

    ポリシーと規約 - Google