私はそれを行う方法を伝えることができます。免責事項: 走行距離は異なる場合があります。これは、単純な WinForms または WPF またはその他のデスクトップ アプリのカジュアルな著作権侵害を防止する場合です。洗練されたクラッキングに対して特に堅牢でも安全でもありませんが、カジュアルな著作権侵害を防止するのに優れた機能を果たします.
ライセンスについては、サードパーティのソリューションをいくつか試しました。それらはすべて、カジュアルな著作権侵害を防止するという名目上のケースではかなり使いやすいものです。
私が見つけたのは、どのライセンスプロバイダーも既存の支払い処理業者/ゲートウェイと実際に互換性がないということでした. いくつかの「オールインワン」ソリューションがありますが、技術的負債のレベルは私 (フリーランサーであり、唯一の開発者) には受け入れられませんでした。Web サイトの「今すぐ購入」リンクから、購入後にデスクトップ ソフトウェアのロックを解除する簡単な方法を探していました。既存の「オールインワン」ソリューションの一部は、この目的にはやり過ぎであり、一部は「購入」の側面を完全に無視しています。
Xml Digital Signaturesを使用して、ユーザーに配布されることのないアプリケーションの秘密鍵でライセンス ファイルに署名することになりました。その結果、ターゲット マシンに .LIC または .LICX ファイルが作成され、ユーザーは読み取ることができますが (エンベロープ署名を除いてプレーン テキストです)、変更することはできません。(むしろ、彼らが変更したことをあなたが知らなければ、彼らはそれを変更することはできません。) この小さなファイルは、システム全体の鍵です。
アプリケーションが読み込まれると、XML 署名が有効であることを確認し (アプリと共に配布されるアプリケーションの公開鍵を使用)、有効な場合はライセンス ファイルから情報を読み取り、それに基づいて特定の機能を有効/無効にします。 . たとえば、ライセンス ファイルには、製品の有効期限や、いくつかの固有のマシン情報が含まれている可能性があります (正規のユーザーに迷惑をかけないように常に注意してください...ライセンスを再申請する必要はありません)。キーは、ハード ドライブを交換するたびに)。
追加の(そして少し侵襲的な)ステップとして、アプリをサーバーに接続させることができますが、これによりサーバーのダウンタイムの問題などが発生します. これを我慢する開発者もいれば、そうでない開発者もいます。
購入の部分については、多くのオプションがあります。Paypal が最も簡単です。あなたは彼らの料金プランが好きかもしれませんし、そうでないかもしれませんが、Paypal を使い始めるのは絶対に簡単です。
そのためには、個人アカウントではなく、プレミアまたはビジネス アカウントが必要です。注: Paypal のドキュメントでは、Paypal ビジネス アカウントが必要であると記載されていることがあります。彼らがそう言うときはいつでも、実際には「Paypal ビジネスまたはプレミア アカウント」を意味します。
ここで、製品 Web サイトを取得し、[今すぐ購入] ボタンなどをカスタマイズします。ユーザーが購入すると、通知サービスであるPaypal IPNから Web サイトに ping が送信されます。この ping は、Web サイトで定義された HTTP エンドポイントへの単なる呼び出しであり、購入に関して必要なすべての情報が含まれています。主に、ユーザーのメール...
(わかりました、私は言及する必要があるように感じます: Paypal と他のほとんどの合法的なプロセッサには、ライブに移行する前にこれらすべてをテストできる「サンドボックス」があります。ライン。)
これを使用して、購入後にアクティベーション コードをユーザーに自動送信します。これにより、手動でコードを送信するまで 24 時間待つ必要がなくなります。このアクティベーション コード (このシナリオでは、GUID など、整形されているかどうかにかかわらず、推測しにくい一意の番号にすることができます) を DB に保存し、重複コードを検出するために追跡する使用回数を記録します。
ユーザーは、提供された画面を介してソフトウェアにアクティベーション コードを入力します。
ソフトウェアは https 経由でサーバーに接続し (これは、ソフトウェアのロックが解除されたときにのみ発生する 1 回限りのことです)、「ねえ、ユーザーが私にくれたこのライセンス コードは有効ですか?」と言います。
提供されたアクティベーション コードが、販売時にデータベースに保存されたコードと一致し、そのアクティベーション コードがまだ確認されていない場合は、成功です。
次に、サーバーはライセンス ファイルを作成する必要があります。ライセンス ファイルは、「このソフトウェアのコピーが許可されていること」を含む非常に単純な XML またはテキスト ファイルです。何を含めるべきかについての標準はなく、いくつかの規則のみがあります。
サーバーはアプリケーションの秘密鍵でライセンス ファイルに署名し、それをデータ ストリームとしてアプリケーションに返します...
.LIC または .LICX (または任意の拡張子) ファイルとして保存し、ステップ 3 に従ってロード時間をチェックします。
これは私にとって非常にうまく機能しており、実装するのは簡単です。全体の鍵は、単純に、それらの XML DSig を信頼することです。LIC ファイルが見つからない場合は、デフォルトで試用モードになります。sig が変更されると、試用モードに切り替わります。LIC ファイルが存在し、有効に署名され、正しい情報が含まれている場合にのみ、(コードで) 「完全な」機能へのアクセスを開きます。
また、コード内に複数のライセンス チェック ポイントを挿入します。アプリの起動時に 1 つ、アイドル時にもう 1 つ、主要な機能領域に入る直前にもう 1 つ実行します。したがって、もし誰かがコードをリバースしたとしても、それができたとしても、すべてのライセンス チェックを掘り下げるために、少なくとも少し検索を行う必要があります。もちろん、人々がこれらのチェックを回避する方法を修正するのを防ぐことはできません。もう少し難しくしたいだけです。