私たちは、簡単に操作できない特定の固定時間または一定回数の使用後に時限爆弾または期限切れになるソフトウェアの中間リリースを作成できるようにしたいと考えています。ネイティブ アセンブリとマネージ アセンブリが混在する Visual C++ を使用しています。
レジストリ タグに依存する必要があるかもしれないと思いますが、これは安全ではないようです。
これを行う方法について誰かアドバイスをいただけますか?
私たちは、簡単に操作できない特定の固定時間または一定回数の使用後に時限爆弾または期限切れになるソフトウェアの中間リリースを作成できるようにしたいと考えています。ネイティブ アセンブリとマネージ アセンブリが混在する Visual C++ を使用しています。
レジストリ タグに依存する必要があるかもしれないと思いますが、これは安全ではないようです。
これを行う方法について誰かアドバイスをいただけますか?
私はしばらく前に「トライアルウェア」ソリューションに取り組んでいましたが、それはレジストリキーの組み合わせを使用し、ジャンクデータに囲まれた特定の位置にあるフラットファイルに保存された情報を使用し、その後、ソフトウェア作成者と一緒にそれを検証する Web サービス。
ただし、FrusratedWithFormsDesigner が述べているように、これを行うための 100% 確実な方法はありません。どんな予防措置を講じても、ハッカーが回避できる方法は常にあります。
サーバーの 1 つからの起動時に、バイナリに小さなコードをダウンロードさせます。
サーバー上のアクティベーションカウンターを追跡し、カウンターが制限に達したときに、「申し訳ありません!」を表示するコードを返します。メッセージ。
特定の日付に期限切れになる証明書を使用して、ClickOnce アプリケーションとしてデプロイできます。私の記憶が正しければ、その日以降の起動時にアプリがエラーになります。
いくつかの注意事項:
アプリケーションにデータベースを使用している場合は、インストール (日時) とユーザー数 (int) を保存し、プログラムの開始/ロード/開始時にこれらのフィールドをチェックするコードを作成する方がよい場合があります。それらが特定の数または時間を過ぎている場合 (これはデータベースにもある可能性があります)、プログラムを終了します。
これは、誰にでもできる方法で行うのは不可能ではないにしても、非常に困難です。いずれにせよ、誰かがソフトウェアを削除して再インストールするのを止めるものは何もありません (あなたはそれを支持しますよね?)。
これらの中間リリースの機能を制限できない場合 (人々が公式ビットに移行するためのより良いインセンティブ)、そのようなスキームを実装する価値があるよりも面倒かもしれません.
プログラムの特定の日付に変数を設定し、プログラムが実行されるたびにシステム日付にアクセスし、その日付が指定された日付以上かどうかを確認します。true の場合、有効期限プロセスを開始し、メッセージまたは警告パネルをユーザーに表示します。