2

Java でデスクトップ アプリケーションを作成しようとしています。

  1. 私が好む別のマシンでは実行しないでください。
  2. 特定の有効期限データの後に実行するべきではありません。

そうする良い考えはありますか?私を助けてください。前もって感謝します。


私の知識によると(非常に少ない)、いくつかの提案があります:

Point1 の場合:アプリケーションの startUp をハードコーディングして ProcessorId をチェックします (これは一意であるため)。有効なものである場合は実行する必要があります。しかし、これを行うには、気にしない各ユーザーに個別のjar setUpを提供する必要があります。

ポイント 2:現在の日付を格納する暗号化されたファイルを維持する必要があります。アプリケーションの各起動中。現在の日付がファイル内の日付よりも大きい場合は、ファイル内の日付フィールドを更新します。そうでない場合は、「期限切れ」アラートが表示されます。

おかしく見えるかもしれませんが、これが私が考えることができるものです。

4

2 に答える 2

2

要件 1 の場合:

ユーザー用に生成されたキーで満たされたデータベースを維持できます。アプリケーションの起動時にキーを要求し、データベースを呼び出してキーを使用済みに変更できます。起動時に入力する一意のキーを各ユーザーに与えることができます。このシステムでは、アプリケーションを使用するためにオンライン アクセスが必要になるため、データベースに対するチェックを行うことができます。

要件 2 の場合:

キーとそれに関連付けられた日付を維持し、起動時に適切な日付に対してチェックを行うこともできます。日付が過ぎている場合、ユーザーは期限切れ通知を受け取ります。

ユーザーは一度だけキーを入力する必要があります...その後、ソフトウェアはそのキーを記憶し、古いキーの有効期限が切れた後にのみ新しいキーを要求します。

Marko のアイデアに対するトレードオフは、この種のシステムではデータベースをチェックするためにインターネット アクセスが必要になることです。


編集:

上記のこの方法では、誰かが JAR を単純にコピーして別のマシンに移動することを防ぐことはできません。マシンの MAC アドレスに基づいてキーを生成し、起動ナットでシステム アドレスをチェックすることができます。これにより、前述の Marko と同じ問題が発生し、マザーボードを交換すると MAC アドレスが変更されます。

編集2:

この問題について考えれば考えるほど、要件を満たすためにサーバー側の接続を維持する必要があることが明らかになります。さらに、誰かが JAR を逆コンパイルする可能性があるため、Java が最良の選択だとは思いません。

于 2012-07-18T14:02:40.887 に答える
2

何をするにしても、コードを (少なくとも) 難読化し、使用する文字列リテラルを暗号化/マングルする必要があります。processorId を読み取ると、マザーボード全体を交換したサービスからラップトップを受け取ったばかりの顧客から怒りの電話がかかってきます (今日では非常に一般的な慣行です)。

暗号化されたファイルは、ただ乗りしているユーザーが簡単に削除できます。いいところに隠しておかなければなりません。Windows では、レジストリ内でこのかくれんぼゲームをするのが好きで、特にそのクラス ID 部分が好きです。

ランダムなアイデアだけ...

于 2012-07-18T13:09:12.113 に答える