人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

シェアウェアを製作中ですが、ライセンス処理の実装について悩んでいます。
具体的には、以下のような(一般的な?)内容です。

トライアル版を使用する場合、最初の起動から有効期限(30日等)を設定したい。
有効期限を越えた場合は、利用できなくしたい。
その後ライセンスを購入した場合のみ継続利用は可能。
有効期限切れの場合、アプリの再インストールやシステムクロックを変更した場合は利用不可。

Windowsならばレジストリになんらかの情報を書き込むのは理解できるのですが、
アプリの再インストールやシステムクロックの変更をどのように対応すればいいのか。
どなたか、アドバイスお願いします。

また、有効期限等の情報を格納するのに、レジストリ以外のよい方法はあるか?
MacやLinuxの場合は、どのような方法があるか?
もアドバイス頂けるとうれしいです。

答えの内容によっては、十分なポイントを提供いたします。

●質問者: ひぐひぐ
●カテゴリ:コンピュータ インターネット
✍キーワード:Linux Mac Windows アドバイス アプリ
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● ayakasi08
●10ポイント

システム領域に管理用ファイルを作成します。

WINDOWSなら

C:\Windows\system32

あたり

◎質問者からの返答

早速の回答ありがとうございます。もう少し具体的だとうれしいです。

それにその管理用ファイルを削除すると、有効期限後に利用可能になりますよね。


2 ● km1967
●30ポイント

>アプリの再インストールやシステムクロックの変更をどのように対応すればいいのか

ご想像の通り、ハッシュキーを用意してレジストリに書き込めばOKです。

システムクロックの変更に対しては、NTPサーバの値を書き込むことです。ただし、ネットに繋がっていることが前提になりますが。


>MacやLinuxの場合は、どのような方法があるか?

実行ファイル自身やライブラリにバイナリで書き込むということをします。

◎質問者からの返答

ご回答ありがとうございます。

>実行ファイル自身やライブラリにバイナリで書き込むということをします。

なるほど・・・といってもイメージがわかないですが、ちょっと調べてみます。


3 ● gogg45
●30ポイント

> MacやLinuxの場合は、どのような方法があるか?

インストール時にどこかのフォルダにファイルを作成しインストール日を記録する方法があると思います。

> また、有効期限等の情報を格納するのに、レジストリ以外のよい方法はあるか?

結局はいたちごっこだと思います。レジストリでも削除されたら終わりですよね?

もし自分がやるなら、支払いが完了していない場合は試用期間のスプラッシュウィンドウを出して、必ず何らかの操作をさせてからしかアプリケーションが使えないようにし、支払いが完了したらなその制限を取り除くような実装にすると思います。(秀丸エディタなど他のシェアウェアを参考にされるとよいと思います。)

あと、注意したほうがいいのは、なぜ?というところのレジストリを書き換えたり、ファイルを置いたり書き換えたり、不正利用のチェックに引っかかった場合にシステムを不安定にさせるような細工をすると、評判を落とすことになると思います。

◎質問者からの返答

ご回答ありがとうございます。

>結局はいたちごっこだと思います。

同感です。ただ容易にハックされては困るし、あまり複雑にしても問題なのは、ご指摘の通りです。

>秀丸エディタなど他のシェアウェアを参考にされるとよいと思います。

本音をいえば、ソースコードを参考にしたいです。


4 ● hironeko222
●30ポイント

インターネット環境下であることが条件ですが、、

WEBサイトを1つ立ち上げておき、ログイン認証で特定ページにアクセスできるようにしておきます。

そのページ自体はユーザーに知らせる必要はなく、そこの認証が成功したか失敗したかでソフトの使用可否を決めます。

トライアル申込があったら、WEBサイトにユーザー登録して利用可能状態にします。

トライアル期間が終わったらユーザー削除すれば利用できなくなり、購入されたらそのまま登録しておけば使用可能。

サイト側をうまく作ればトライアル用ユーザーは自動で30日後に削除なんてことも可能ですかね。

サーバーメンテ、ダウンに備えて、1回認証成功していればそこから7日程度は利用可能にしておくのがクレーム回避に有効かも。。

その1回認証できたというのをレジストリなりに書いてしまうと、そこがハックされるとNGですね。暗号化してチェックコードを含めるか。

ターゲットのユーザー層によりでしょうか。。 一般的なユーザー相手ならそれほど凝らなくても大丈夫かも知れないですね。

◎質問者からの返答

ご回答ありがとうございます。

ライセンス情報をネットワーク上におく考え方ですね。

ネットワーク利用を前提した場合ならばご指摘の通りでいいですね。

#ただ今回のアプリケーションはおもいっきり、スタンドアローンなんですよね


5 ● heke2mee
●30ポイント

私もあるソフトを開発中で、フリーにするかシェアウェアにするか

悩んでいるので参考になれば幸いです。


質問主さんのコメントにある「管理用ファイルを削除すると・・・」と言う条件を付けてしまうと、

ローカルでライセンス管理をすることは出来ません。


有効期限を設けるということは、初回に基準となる日付をレジストリやファイルなどに

書き込む必要があります。

保存場所を見つけにくくすることは出来ますが、見つかってしまえば消せます。

またワザワザ探さなくても仮想マシンなどを使っている場合は

「仮想マシン自体のスナップショット」を保存していれば、すぐにロールバック出来きます。


それとアプリケーションのアンインストール時に設定を残す必要があるので、ユーザによっては

「ゴミを残したままだ」と言って嫌悪感を感じ、避けられる可能性があります。


オンラインでユーザー管理をやるにしても、アカウントの共有をされてしまうと

無理です。これを防ぐには個人をある程度特定できる情報が必要になります。

例えば、携帯のメールアドレスやマシン固有情報(MACアドレスなど)です。

ただ、これを行うと機種を変更した場合の対応なども必要となりコストが掛かります。



本来の目的は、ユーザにとって必要なソフトかどうかを判断してもらうことです。

動作の機能制限付きや、起動時にメッセージが出るだけにして

ライセンス登録を行った場合に、制限を外すほうが簡単です。

また、機能制限もやりすぎると使ってもらえません。


ライセンス番号の配布はVectorみたいな所でやってもらうのが

簡単たど思います。ただ、この方法もライセンス番号を共有されたら

意味がありません。


最後は、どこまで妥協するかだと思います。

◎質問者からの返答

ご回答ありがとうございます。

おっしゃる通り、ライセンスの適用にあたって限界があるのは理解しています。

やはりこういのって、みな独自で実装しているのがほとんどなんでしょうね。

何か、いい落としどころはないのでしょうか・・・。


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ