試用期間後に期限切れになるアプリケーションを作成する[複製]
質問
この質問にはすでに回答があります:
C#2008 SP1
特定の数の顧客に提供したいアプリケーションを作成しています。
追跡期間(1か月)が経過するとアプリケーションが動作しなくなるようにするための最適なソリューションは何ですか。
ソフトウェアの購入に興味がある場合は、アプリケーションのロックを解除するためにライセンスキーなどを与えると考えていました。
自分で仕事をしているので、予算が非常に限られています。これを行う無料のサードパーティ製品はありますか?
解決
日付ベースのアプローチを使用する場合、ユーザーが日付を設定し直すことで回避できます(ただし、これを頻繁に行うことはないでしょう)。別の方法は、有効期限が切れる前に特定の回数アプリケーションを起動できるようにすることです。このアプローチは明らかに日付の変更を無視します。
私が好む方法は、プログラムの通常の使用には重要だがアプリケーションの評価には重要ではないアプリケーションの一部を無効にすることです(たとえば、作業を保存する機能など)。私は自分のソフトウェアでこれを行い、彼らが完全なプログラムを購入したときに彼らのコンピューターに固有のロック解除コードを送信します。このアプローチの主な利点の1つは、インストールされたデモが潜在的な販売ツールとして永久に機能することです。私のプログラムが常にある程度動作するようにしたいです。 「申し訳ありませんが、このプログラムの有効期限は切れています」とは思いません。メッセージは多くの売上を生み出します。
他のヒント
オプション:
-
インストール時にレジストリに何かを書き込むと、後で見つけて削除するのが難しくなります。このようにして、アプリケーションは最初にインストールされた時期と、今すぐ動作するか停止するかを認識します。レジストリが適切にクリーンアップされた場合、またはOSが再インストールされた場合、このメソッドは失敗します。
-
何らかのオンライン検証サービスを使用します。 [1]の欠点はありません。また、OSインストールを超えるアプリケーションアクティビティを監視できます。そのためには、何らかの方法でユーザーPCを一意に識別し、その署名をサーバーに送信する必要があります。
これは、ユーザーが日付/時刻の設定でプレイしたり、時計をさかのぼったりするのを防ぐために行ったトリックです。
アプリを初めて実行するときは、レジストリで最初の実行日と終了試用日と最終実行日を暗号化します。また、アプリを実行するたびに、そこからシステム日付ではなく終了試用日を復号化して確認します。このソリューションは、インターネットに接続していないユーザーに対して機能します。
インストール中にレジストリキーを書き込みます。キーにはインストールの日付が含まれます。レジストリキーの日付は暗号化する必要があります。
アプリケーションが起動したら、このレジストリキーの存在を確認します。存在しない場合はアプリケーションを閉じ、そうでない場合は日付を解読し、試用期間を確認し、試用が終了したらアプリケーションを閉じます。
最も簡単な解決策(および結果として最も簡単な回避策)は、プログラムが最初にインストール(または実行)される日付をファイルに保存し、プログラムが起動されるたびに現在の日付と照合することです。差が>の場合30日後にプログラムを終了します。
より不明瞭な場所またはユーザーが改ざんしにくい場所(レジストリなど)に日付を保存することで、システムを回避して使用する時間が長くなりますが、 t PCの時計の巻き戻しを停止します。
サーバーに日付を保存し、サーバーから日付を取得する場合、これはより安全ですが、ソフトウェアを使用するにはユーザーがインターネットに接続できる必要があります。