質問: シェアウェアを製作中ですが、ライセンス処理の実装について悩んでいます。 具体的には、以下のような(一般的な?)内容です。 トライアル版を使用する場合、最初の起動から有効期限(30日等)を設定したい。 有効期限を越えた場合は、利用できなくしたい。 その後ライセンスを購入した場合のみ継続利用は可能。 有効期限切れの場合、アプリの再インストールやシステムクロックを変更した場合は利用不可。 Windowsならばレジストリになんらかの情報を書き込むのは理解できるのですが、 アプリの再インストールやシステムクロックの変更をどのように対応すればいいのか。 どなたか、アドバイスお願いします。 また、有効期限等の情報を格納するのに、レジストリ以外のよい方法はあるか? MacやLinuxの場合は、どのような方法があるか? もアドバイス頂けるとうれしいです。 答えの内容によっては、十分なポイントを提供いたします。
回答: 私もあるソフトを開発中で、フリーにするかシェアウェアにするか 悩んでいるので参考になれば幸いです。 質問主さんのコメントにある「管理用ファイルを削除すると・・・」と言う条件を付けてしまうと、 ローカルでライセンス管理をすることは出来ません。 有効期限を設けるということは、初回に基準となる日付をレジストリやファイルなどに 書き込む必要があります。 保存場所を見つけにくくすることは出来ますが、見つかってしまえば消せます。 またワザワザ探さなくても仮想マシンなどを使っている場合は 「仮想マシン自体のスナップショット」を保存していれば、すぐにロールバック出来きます。 それとアプリケーションのアンインストール時に設定を残す必要があるので、ユーザによっては 「ゴミを残したままだ」と言って嫌悪感を感じ、避けられる可能性があります。 オンラインでユーザー管理をやるにしても、アカウントの共有をされてしまうと 無理です。これを防ぐには個人をある程度特定できる情報が必要になります。 例えば、携帯のメールアドレスやマシン固有情報(MACアドレスなど)です。 ただ、これを行うと機種を変更した場合の対応なども必要となりコストが掛かります。 本来の目的は、ユーザにとって必要なソフトかどうかを判断してもらうことです。 動作の機能制限付きや、起動時にメッセージが出るだけにして ライセンス登録を行った場合に、制限を外すほうが簡単です。 また、機能制限もやりすぎると使ってもらえません。 ライセンス番号の配布はVectorみたいな所でやってもらうのが 簡単たど思います。ただ、この方法もライセンス番号を共有されたら 意味がありません。 最後は、どこまで妥協するかだと思います。