2016-07-07 7 views
1

私は自分のアプリケーションの有効期限をどのように設定できるのだろうかと思っていますが、顧客(顧客は実際には存在しませんが、いつかは存在すると思います)日付)を製品のインスタンスに追加します。今のところ私はそれを以下のように解決していますが、これは良い考えではないと私は説明します:ライセンスC#アプリケーション

私はdatetime pickerで小さなアプリケーションを作成しました。例7.7.2016、それをレジストリにティックとして保存し、アプリケーションを起動するたびにレジストリからそのティックを読み込みます。悪いことではありませんが、顧客のPCでアプリケーションを実行して日付を選択してレジストリに書き込む必要があります。小さなアプリケーションを削除するのを忘れた場合、顧客は希望する日付に設定することができます。別の解決策は、ローカルコンピュータ上で日付を生成し、レジストリコピーからティック値を読み取り、リモートからキー(レジストリからのティック値)または顧客のPCに何かを入力することです。しかし、それは良い解決策ではありません。顧客は私がダニを保管している場所を見つけ、それを別のマシンや別のマシンにコピーするかもしれないので、私はそれに満足していません。

私は、次のようにしてください:

私の開発マシンでは、ライセンス認証のためのソフトウェア(キージェネレータ)を実行してから、ソフトウェアを有効にしてプロセッサまたはハードドライブのIDを取得し、ハッシュ[ID + DATE]を作成して(これはすべての単一のマシンで一意です)、データベースまたはレジストリに保存します。顧客のためにアプリケーションに保存します。次に、ハッシュを解凍して日付部分のみを取得し、顧客がアプリケーションを実行するたびに次のことを行うことができます:

if(DateTime.Now > "HASHED date part") 
    Message : application has expired! 

日付+ IDを組み合せてハッシュしたり、何らかの形で保護したりすることはできますか?ユーザーはそれを読んだり変更したりすることができますか?後で日付部分を切り取り、アプリケーションが有効かどうかを確認します。

答えて

0

ライセンスサーバーをホストし、アプリケーションを起動するときに検証に使用するトークンを各ユーザーに与えることができます。それで、あなたのdateTimeのものはすべてあなたのサーバー上で扱うことができ、あなたのユーザーが卑劣になる危険性はずっと少なくなります。それは、あなたのアプリケーションを実行しているすべての人がネットに接続する必要があることを意味しますが、それはあなたに受け入れられないかもしれません。

+0

はい、それは受け入れられません。ユーザーがオフラインで作業すると思われるからです。 –

+0

まさにそうです。また、インターネットに接続していることを意味する「サーバーへのping」も必要です。作る賢明な仮定ではありません。 –

+0

興味深い、良いポイントの人。個人的には、誰もがインターネット接続を必要としていると思うのはうれしいですが、それは私のアプリケーションのほとんどが関係なく1つに依存しているからです。 –

1

いいえ、できません。全体のハッシュのは、、具体的にはです。アルゴリズムがに設計されているため、ハッシュが生成された元のデータを判別できなくなります。

暗号化データから元のデータを再作成できるようにするには、データを暗号化する必要があります。

また、ユーザーがプログラムを実行するのを防ぐためのアプローチを打ち負かす方法はたくさんあります。ライセンスソフトウェアはうまくいきません。

+0

ああ、私は暗号化して日付部分を暗号化する必要がありますか?_暗号化する必要がありますか? –

+0

@ billy_56 *もしあなたが日付を暗号化すれば、プログラムはそれを解読して日付を再構成することができます。もちろん、そのプログラムのユーザーがそのプロセスを操作して、指定した日付の後でもプログラムを実行できるようにするための方法はたくさんあります。 – Servy

+0

はい、私は理解しています。今のところ、アプリケーションの1つのインスタンスが1度だけコンピュータ上で動作するようにしたいと考えています。あなたが言ったように私はそれをやろうとします、暗号化 - 暗号解読=データの読み込みなど..あなたは私にその仕事をするために使うべきアドバイスを私に与えることができますか?おそらく暗号化と復号化にはもっと多くの方法があるので、もし私たちがC#について話しているなら、あなたは私に助言を与えることができます:) –

1

また、私は特に、ライセンス・制御方式は、上記のすべて、シンプルでなければなりません(20年にわたって、今、ために商業的に成功した製品を販売したという経験に基づく...)を示唆するかもしれません。

は、私は、具体的(!)あなたがない試みがチェックする必要があるか、CPU-ID、またライセンス・マシンの任意の他の物理的特性を確認することをお勧めします。私がこれまでに見たことのあるすべてのツールは、信頼できないことが判明しました。さらに、私の顧客は、ソフトウェアであるという事実をあるマシンから別のマシンに簡単に伝えることができて感謝してくれると繰り返し言いました。

(はい、私達はちょうどそれがより少なくより些細な「日付をいじる」できるようにすること、いくつかのディレクトリをスキャンしない...)

我々信頼彼ら、そして彼らが何を思いますか?ああ...彼らそれを購入します。あなたが誰かに正直で、あなたがそれに対して課す価値が本当に価値のある製品を彼らに与えるなら、人々はあなたにも正直であると非常に喜んでいます。 (これらの人はのお客様で、ではありません。決して人生にはなれません。です)

最新のバージョンでは、ライセンス情報はWindowsレジストリに格納されており、インストーラがパッケージ化して呼び出したDLLファイルを使用して製品のインストール時に挿入されます。これは、単純にシリアル番号、製品機能ベクトル、および有効期限を難読化された16進文字列で構成します。番号は、ソフトウェアの起動時にスプラッシュ画面に表示される「ライセンス対象」の会社名を隠すためにも使用されます。インストーラの実行時には、これを含むさまざまな理由で管理者権限が必要です。ライセンス情報を変更するには、再インストールする必要があります。

あなたは政府(非常に有利な市場セグメント)に売却する予定のソフトウェア、政府が通常であるため、一般必見は、ライセンス制御機能を持っており、あらゆる種類の「無料デモ」オプションを持っていてはいけません自由に(何らかの形で)入手できるものに公的資金を使うことは許されていない」

最後の1コメント:「無料デモ」は一切行っておりません。あなたが私たちの製品を "試してみたい"場合はを購入する必要があります。期限内に期限切れのコピーに全額を適用することができます。一部の人々は単に(安価)の期限付きライセンスを購入し、問題を解決するために私たちの製品を使用し、その問題(起こったとして)は決して再び起こることはなく、したがって我々もそうです。収益の非常に重要な部分がこのようになります。

私には、ポイントが繰り返されます:"あなたの顧客を世話してください、彼らはあなたを世話します。"あなたのライセンス制度が "煩わしくて厄介な"場合... ;-) ...それは人々がを行うものの1つですあなたの商品を購入するかどうかを決定するときに非常に真剣に検討してください。あなたのスキームがa * sの痛みであるので、あなたは売り上げを失うことができます。

関連する問題