私は C# を使用しており、プログラムをアクティブ化するためにユーザーが入力するキーを持っています。一度入力したキーをユーザーに見せたくありません。保管方法/場所の推奨事項はありますか?
5 に答える
キーを別のファイルとして保存できます。キーを暗号化して保存します。そのため、ユーザーが改ざんしようとしても、アプリケーションを非アクティブ化できます。
コードプレックスのこのプロジェクトに興味があるかもしれません: http://licenser.codeplex.com/
編集:確認すべきいくつかの質問。
Excutable のリソースにキーを確実に格納できますが、その手順は非常に長く、OpenResource、GetResourceData、UpdateResource などの利用可能な API がいくつかあります。ビジュアル スタジオ ツールがインストールされていない限り、リソースには簡単にアクセスできません。
ただし、現在実行中の実行可能ファイルのリソースを変更することはできませんが、メインの実行可能ファイルをロードし、リソースを変更して保存できる別のアクティベーション プログラムを作成できます。
Windows マシンがアプリケーションを実行していると仮定すると、レジストリを使用して暗号化されたキー (おそらく MD5?) を保存することもできます。
そうすれば、ユーザーが表示できる「ファイル」にはありません(ただし、ユーザーが表示/変更/削除することはできます)。
私の意見では、ユーザー (標準的なユーザー...) はレジストリを調べない傾向があります。そこにキーを隠すことができます。
実際、@Shoban の最初のリンクwhere-should-i-store-my-applications-activation-keyには、この問題に関するより多くの議論があります - あなたはそれを読むべきです...
暗号化キーに似ていることは知っていますが、Windowsキーコンテナはどうですか?
ライセンス キーを保存する場所を隠すことは忘れてください。決定したユーザーを止めることはできません。また、ライセンス情報を「変な」場所に保存しようとすると、システム管理者を怒らせるだけです。実行中の実行可能ファイルに保存しようとすることについてはすべて忘れてください。簡単な方法で保存するのは難しく、多くのウイルス対策ソフトウェアをトリガーします.
改ざん防止機能が必要な場合は、商用ソリューションのいずれかを選択してください。これが耳障りに聞こえる場合は申し訳ありませんが、このような質問をしていることを考えると、破るのが少しでも難しいものを思いつくことはありません.