1. ホーム
  2. c#

[解決済み] C#アプリケーションのプロダクトキーを作成するにはどうすればよいですか?

2023-02-11 09:03:14

質問

C# アプリケーションのプロダクト キーはどのように作成すればよいですか。

私は、毎年更新する製品 (またはライセンス) キーを作成する必要があります。 さらに、試用版のためのキーを作成する必要があります。

関連する

どのように解決するのですか?

アプリケーションに認証させたいデータを含むレコードを作成するようなことをすることができます。たとえば、有効にするプログラムの機能、有効期限、ユーザー名 (ユーザーにバインドする場合) など、何でも含めることができます。次に、それを暗号アルゴリズムで暗号化するか、ハッシュ化します。そして、それをプログラム内で検証するだけです。ライセンス ファイルを配布する 1 つの方法 (Windows) は、レジストリを更新するファイルとして提供します (ユーザーがそれを入力する手間を省くことができます)。

遅かれ早かれ、誰かがこのチェックをスキップするためにあなたのプログラムにパッチを適用し、パッチを適用したバージョンを配布することでしょう。あるいは、すべてのチェックをパスするキーを作成し、それを配布したり、時間を逆行させたりするでしょう。どんなに複雑な仕組みを作っても、結局は「隠蔽によるセキュリティ」であり、必ず実行されるのです。たとえできなかったとしても、誰かがハッキングしたものを配布してしまうでしょう。ドングルを提供する場合も同様で、誰かが望めば、そのチェックにパッチを当てることができます。コードをデジタル署名しても、その署名を削除したり、辞任させたりすることができます。

デバッガなどでプログラムが実行されないようにするテクニックを使用すれば、問題を少し複雑にすることができますが、これでも弾丸のように確実ではありません。したがって、正直なユーザーが支払いを忘れることがないように、十分に難しくする必要があります。また、お金を払っているユーザーにとって、そのスキームが邪魔にならないよう十分に注意してください。

ユーザーに一意の ID を提供し、その ID が持つべき機能をオンラインでチェックし、ある期間キャッシュしておくだけです。しかし、同じ注意事項がすべて適用され、人々はこのように何でも回避することができます。

キーを忘れたユーザーなどに対処しなければならないサポート費用も考慮してください。

編集部: 付け加えると、この問題にあまり時間を費やしたり、複雑なスキームが異なっていてクラックされないと考えたりしないでください。そうではなく、プログラムが動作するハードウェアと OS を人々がコントロールする限り、そうなることはあり得ません。開発者は、このために独自のシステムを開発すれば、自分たちだけが知っているので「より安全」だと考え、これまで以上に複雑なスキームを考え出そうとしてきました。しかし、これは永久機関を作ろうとするプログラミングに等しいものです。)