私は自分のアプリケーションの有効期限をどのように設定できるのだろうかと思っていますが、顧客(顧客は実際には存在しませんが、いつかは存在すると思います)日付)を製品のインスタンスに追加します。今のところ私はそれを以下のように解決していますが、これは良い考えではないと私は説明します:ライセンスC#アプリケーション
私はdatetime pickerで小さなアプリケーションを作成しました。例7.7.2016、それをレジストリにティックとして保存し、アプリケーションを起動するたびにレジストリからそのティックを読み込みます。悪いことではありませんが、顧客のPCでアプリケーションを実行して日付を選択してレジストリに書き込む必要があります。小さなアプリケーションを削除するのを忘れた場合、顧客は希望する日付に設定することができます。別の解決策は、ローカルコンピュータ上で日付を生成し、レジストリコピーからティック値を読み取り、リモートからキー(レジストリからのティック値)または顧客のPCに何かを入力することです。しかし、それは良い解決策ではありません。顧客は私がダニを保管している場所を見つけ、それを別のマシンや別のマシンにコピーするかもしれないので、私はそれに満足していません。
私は、次のようにしてください:
私の開発マシンでは、ライセンス認証のためのソフトウェア(キージェネレータ)を実行してから、ソフトウェアを有効にしてプロセッサまたはハードドライブのIDを取得し、ハッシュ[ID + DATE]を作成して(これはすべての単一のマシンで一意です)、データベースまたはレジストリに保存します。顧客のためにアプリケーションに保存します。次に、ハッシュを解凍して日付部分のみを取得し、顧客がアプリケーションを実行するたびに次のことを行うことができます:
if(DateTime.Now > "HASHED date part")
Message : application has expired!
日付+ IDを組み合せてハッシュしたり、何らかの形で保護したりすることはできますか?ユーザーはそれを読んだり変更したりすることができますか?後で日付部分を切り取り、アプリケーションが有効かどうかを確認します。
はい、それは受け入れられません。ユーザーがオフラインで作業すると思われるからです。 –
まさにそうです。また、インターネットに接続していることを意味する「サーバーへのping」も必要です。作る賢明な仮定ではありません。 –
興味深い、良いポイントの人。個人的には、誰もがインターネット接続を必要としていると思うのはうれしいですが、それは私のアプリケーションのほとんどが関係なく1つに依存しているからです。 –