5

私はクライアントに提供したいデモ用の小さなプログラムを作成しました。これをクライアントが 5 回実行して機能を確認できるようにします。シリアルキー機能を実装して試用ソフトを作るほどの大きなソフトではありません。

プログラムの使用を 5 回以上制限できる、またはしきい値の制限後にプログラム自体を削除できる簡単なソリューションが必要です。

1つの解決策が頭に浮かびました。同じプログラムで 4 つの .txt ファイルを作成し、それらを diff に保存します。これらのファイルには、プログラムが実行された回数が格納されます。アプリケーションが起動するたびに、これらすべてのファイルがチェックされ、いずれかのファイルにしきい値の制限を表す数値が含まれている場合は、しきい値の制限に達したと言って終了します。

クライアントが何度もそれを使用することを制限するための、シンプルでありながらより良い解決策は他にありますか?

しきい値の制限を超えてプログラムが削除されると、さらに良いでしょう。

4

7 に答える 7

7

本当に簡単にしたい場合は、時間チェックを入れて、今日から 5 日後または 1 週間後に時間切れになったときにクライアントがコードを実行できないようにします。

以下のスニペットを試すことができます

Calendar expiry = Calendar.getInstance();
expiry.set(2010, 1, 31,0,0); // Expire at 31 Jan 2010
Calendar now = Calendar.getInstance();
// If you don't trust client's clock, fetch time from some reliable time server
if( now.after(expiry)){
// Exit with proper expiry message
}
else
{ 
// let the customer enjoy your software
} 

信頼できるタイム サーバーから時刻を取得する方法については、こちらを参照してください。

于 2010-01-27T11:29:10.843 に答える
3

Java Web Start を使用して、顧客ごとに JNLP ファイルを使用して、顧客固有の推測しにくい場所にソフトウェアをデプロイすることを検討してください。これにより、集中管理を行うことができ、期間が終了したら JNLP を削除できます。

また、小さな jar が常にキャッシュされていないことを確認して、顧客が実行できるようにサーバーに連絡する必要があるようにします。

于 2010-01-27T11:32:37.793 に答える
1

Windowsアプリケーションの場合、次の方法で行います

初めて使用した日付で、プログラム内にレジストリ キーを作成します。このキーは、非示唆的な名前と暗号化された値で名前が付けられたフィールドに隠されています。

時計のトリックを避けるために、最後に使用された日付も保存します。

私の検証コードでは、プログラムを起動するたびに、実際の日付とプログラムが初めて使用された日付をチェックします。それが正しければ、プログラムが最後に使用された時刻も保存します。検証には 3 つのケースがあります。

  1. 実際の日付が最初の時間よりも長く、デモ期間と重なっている場合、プログラムは使用されなくなります。

  2. コンピューターの日付が、プログラムが最後に使用されたときよりも小さい場合、ユーザーはシステム クロックを巻き戻そうとしました。この後、プログラムはもう使用できません

  3. 最後のケースは、システムの日付が最初の使用日より後で、有効期限より前である場合です。この場合、プログラムの使用は許可されます。

    // このコードはシステム レジストリにアクセスするためのものです public static Preferences userPref = Preferences.userRoot();

    // レジストリを書き込みます userPref.put("keyName", "value");

    // レジストリを読み取ります String read = userPref.get(key, "0");

于 2010-01-27T12:18:46.230 に答える
1

リモート デスクトップまたは VNC 経由で試してもらいます。

于 2010-01-27T12:05:55.667 に答える
0

早速ですが、私はこう思います。

  1. 次のようなデータ構造を作成します

クラス {

prop uid = HOSTNAME; プロップMaxUsage = 5; プロップはすでに使用済み = 5;

}

  1. このクラスを Serializable として実装し、HOSTNAME なしでこのファイルをディスクに書き込みます。例: http://www.java2s.com/Code/Java/File-Input-Output/Serializerclass.htm

  2. このシリアル化可能なファイルをアプリケーションと共に出荷します。

  3. アプリケーションが初めて実行されるとき、アプリが実行されているホストの HOSTNAME でプロパティ uid を書き込みます。アプリが実行されるたびに AlreadyUsed をデクリメントし、ファイルに保存します。

  4. アプリケーションが実行されるたびに、ファイルが存在するかどうかを確認します。終了していない場合は、uid が正しい HOSTNAME を持ち、Already used の数が == 0 でないことを確認します。

JavaWebstart のようなものを使用している場合も、非常に簡単です。

それがあなたの原因に役立つことを願っています。

于 2010-01-27T12:26:06.313 に答える
0

彼らに顧客の「キー」を渡し、このキーを使用して製品が顧客に対して現在有効であるかどうかをソフトウェアに独自の Web サーバー上の小さなサーブレットに尋ねさせます。

于 2010-01-27T15:36:55.877 に答える
0

4 つのファイルの代わりに、単一のファイルを用意し、インストール時にそのファイルに数 (クライアントがデモ版を使用できる回数) を書き込みます。実行するたびに、ファイルが存在するかどうかを確認し、数を減らして、同じファイルに再度書き込みます。

ファイルが見つからないか、値がゼロの場合は、プログラムを終了します。

于 2010-01-27T11:33:47.463 に答える