2009-10-06 6 views
22

私は自分の製品を作成してライセンスキーを生成しましたが、30日後にそのキーに を尋ねます。私は30日を追加して日付を格納するレジストリ値でそれをしている。私のロジックが動作しないうちに30日後にユーザーがシステムの日付を変更すると、私はそれを発見しました。私の製品を30日間試用版にするにはどうしたらいいですか?

システムの日付をチェックせずに試用版ソフトウェアのソリューションはありますか? は30日間しか試用できません。

+0

このアプリの目標販売価値はどれくらいですか? – Lazarus

+2

@Lazarus - 50 lakhs – Nirmal

答えて

2

最初に試用を開始したときからユーザーが日付を変更したかどうかを検出する方法が必要です。前回使用したソリューションでは、「最後に実行された」日付と「最初に実行された」日付が保存され、クロックが2日間以上「最後に実行された」ものに変更された場合、トライアルは終了します。また、2日前に日付を移動し続けることができないように、「実行日」カウンタが必要です(その部分について言及するのを忘れていた) - 実行ごとにカウンタが増えます。

もちろん、このようなソフトウェアライセンスシステムは、レジストリを適切に更新してアンインストールして再インストールすると回避できます。あなたが曖昧さのない.NETコードベースを使用している場合)。

+3

新しい仮想マシンイメージで実行するだけです。 –

+0

@ Pete:まさに。 –

5

ライセンスコンポーネントを使用できます。自分自身で(LicenseManager classを参照)作成するか、ベンダーから購入することができます(たとえば、CryptoLicensing)。

+2

"軍事力のセキュリティ"(LogicNPによって宣伝されている)の問題は、軍隊がさまざまな目的で異なる強みの暗号を使用することです。強力なもののために英国では爆発物のライセンスが必要です。強力な軍用暗号は改ざんされていると自己破壊する組み込みハードウェアモジュールでホストされています。あなたがソフトウェアとしてそれを公表するなら、あなたは公式の秘密の行為の下で起訴されるでしょう。米国は、もしあれば、強力な暗号を扱うのがより制限的です。それは非常に有益な主張であり、おそらく "軍隊が時には使用する最も弱い暗号"であるべきです。現在の日付のCを保存し、最終的なアドバイス –

35

毎日の使用後に増分する別のレジストリキーを持つことができます。そうすれば、コンピュータの日付を変更しても、このキーはプログラムに30日以上実行されていることを示します。

また、ユーザーが手動で変更しようとすると、プログラムは値を復号化できず、有効な数値を取得できなかったため、プログラムが実行を拒否することがあります。

再インストールを回避するには、アプリの特定のバージョン(インストールされてからのタイムスタンプなど)に固有のアプリの試用版で保存されたファイルに情報を追加できます。試用版のアプリケーションがファイルを開こうとすると、このシグネチャがチェックされ、同じインスタンスで作成されたことを確認します。そうでなければ、ファイルを開くことを拒否します。これは、基本的に、アプリを単に再インストールして使用することを中止します。

しかし、ユーザーは自分のマシンを完全に制御できますし、何をしたいのかを知ることができます(Webサービスへのアクセスが不十分で、ユーザーはアプリを使用する)。この余計な問題を抱えている人を止めようとするほどのエネルギーを費やすのではなく、その余分な時間/お金/エネルギーを費やして払うつもりの人たちのためにアプリを改良することでしょう。

+17

+1、Cは再びそれをクラックします日付を回復するよりも、アプリケーションを起動するよりも、日付Dを強制...:/クロックがない限り –

+0

簡単なバッチファイルの –

2

システム日時を参照することなく30日を処理するのが難しい。アプリが開始された日付のリストを常に保持しておき、前回とは異なるときに1をカウントすることができます。こうすることで、ユーザーはアプリを起動するたびに同じ日付を設定する必要があります。

これ以外にも、インターネットアクセスがあった場合、現在の日付の既知のタイムサーバーに照会することができます。これは切断することで回避できますが、アプリが起動する前にいつでもインターネット接続を要求することができます。

最後に、ハードウェアドングルなどの外部のローカルタイムソースがありますが、自分で試して直接管理するほうがよい極端な方法があると思います。

0

インターネット接続を保証できる場合は、オンラインスキームを実装できます(タイムサーバーまたは独自の認証サーバーを確認してください)。もちろん、別の依存関係も導入されます。インターネットがなくなると、ユーザーは作業できなくなります。

最終的に私は、サードパーティのライセンスソリューションを買うと言うだろう - それはまだ壊れないではないのですが、それはおそらくあなたが多くの時間と労力なしに自分で行うことができるものよりも堅牢になります。

0

最後の実行日を保存し、システム日付がそれより前の場合は、試用期間を終了します。

ザ・のみフェイルセーフ方法は、あなたがホスト、誰もあなたの接続コードを割れていないと仮定すると、サービスに対するアプリ検証することです。

限り、彼らは、レジストリ値/分離ストレージファイル/保存をクリアすることができますように)設定:試用を再開できます。それについてはあまりできません。だからこそ、人々は、時間ベースの試用期間に加えて、試用版ソフトウェアの機能を減らすことを選択しています。

4

私はあなたのための簡単な解決策を持っています。 1日 2.カウンター

手順:これまでのカウンタ= 1

  • コピーシステムの日付を設定し

    1. は、レジストリのための2つの変数を取ります

      日付が現在の日付と異なる場合は、その日付をレジストリにコピーするよりも毎回チェックします日付が同じ場合は何もしないでください。

    2. 今、あなたはまた、それが動作するよりも、ユーザーは以前の日付にシステム日付を変更する場合は、試験日のためにこれらのトリックを使用することにより、有効期限

    に対抗確認することができます。技術的な人は、あなたのロジックを認識しないように、レジストリのために

    あなたは日付&カウンタを暗号化することができます!

    歓声が...

    は、ユーザーがそれぞれの日の日付を変更しない場合にのみ、このロジックが失敗した

    を追加しました!もう一度私たちはそれを解決しました!

    私はそれが可能であるかどうかを知っているかいないが、あなたは常にいくつかのソリューションを持つことができません。

    1. レジストリ内の試用期間&店、それの合計時間をカウントします。
    2. 各実行の合計時間をカウントし、別の変数に追加します。 (私はそれがタイマーでできることを願っています)
    3. 上記の2つの値を比較して、有効期限を決定してください。
  • +2

    興味深いソリューションは、ちょうど前方に実行されます。..私は翌日に立ち上げ、今日のレジストリの日付は今日では変わらないので、カウンターを増やしませんか?また、アプリを1日に2回(またはそれ以上)起動するとどうなりますか?各打ち上げはカウンターを増やす予定です。 – Lazarus

    +2

    OK、ロジックを少し変更しました。 – Vikas

    0

    (30日間の試用版ではなく)8時間の試用版を許可することができれば、システムの日付時間の依存を取り除く方法の1つは、分。これらを数えると、アプリが実行されるたびに、合計使用分カウントが累積されます。このカウント値は、レジストリなどのどこかに格納できます。

    0

    シンプルストア評価終了日であり、毎日点検しています。日付操作による長時間の使用を避けるには、アプリケーションの時間数を維持します。増分してレジストリに書き込んでください。チェックは、評価終了日と24を超えない時間数の両方に対して行う必要があります(一部のテノールでは30になる可能性があります)。アプリケーションの閉鎖、日時の設定が変更されたかどうか、あなたのアプリケーションが検出することができるようになります昼食です次回の日時を保存

    は(少なくとも彼らはそれを変更することはできません。

    0

    はについても考えてみて閉会時間の前の何かまで)。 例:アプリケーションのクロージングで

    :アプリケーション

    保存ザ・タイム=> 15:34 2014年3月31日(保存)

    次の開始:

    チェックDatime.Now> 15:34 3/31/2014。 (ので、彼らはそれを怒鳴る行くことができない...)

    を追加しました:

    は、アプリケーションの使用にシステムの日時の設定を統合するために何とかしてください:生成請求書、チケット、領収書...何でも!

    0

    無料プロジェクトのLibprotを使用できます。サイトはhttps://github.com/libprot/trunkです。

    考え方はシンプルで使いやすいということです。保護に$$$を費やすことはできますが、1週間でハッキングする可能性があります。誰かがあなたのコードをリバースエンジニアリングしたいなら、誰もそれを止めることはできません。私のアドバイスは、動作する簡単な方法を使用する。

    のような文字列書く:

    会社Xを| 2014年2月10日| 2014年2月10日が現在の日付で、システム時刻が変更された誰かシステムクロックその後、小さければ=>我々がすべき2015年1月12日

    をない

    2015年1月12日を実行します - キーは

    有効で、買った会社の名前は/それをダウンロードし何時まで。

    この文字列は、非公開の公開鍵で非対称アルゴリズムで難読化され、電子メールで送信できる文字列にエンコードされます。

    また、検証のためにいくつかのWebサービスが必要な場合もあります。インターネット接続がオンの場合、鍵を検証することができます。ハッキングされ、インターネットで一般公開されている場合は、禁止することができます。あるいは、誰かがキージェネレータを書くと、そのキーが本当であることを確認することができます。

    あなたのサイトにいくつかのPHP/javaスクリプトを追加して、自動的にトライアルコードを送信することができます。

    関連する問題