質問

PC ごとのライセンス キーを生成するための要件として、どの PC 上でも安定した (ほぼ) 一意のキーを返すコードが必要です。そうではありません 持っている 一意であることが保証されていますが、それに近いものです。それ する ただし、ハードウェアが大幅に変更されない限り、特定の PC が常に同じ結果を生成できるように、適度に安定している必要があります。

これは、wxWidgets を使用する Windows アプリケーション用ですが、Win32 またはその他のオプションでも問題ありません。

MAC アドレスについて考えていましたが、省電力モードでネットワーク カードを定期的に無効にできるラップトップについてはどうすればよいでしょうか?私は遭遇しました GetCurrentHwProfile でも、それは私が望むものとは違うようですか?

役に立ちましたか?

解決

MACアドレスメソッドを使用するだけです。ワイヤレス / LANカードがオフになると、ネットワーク接続に表示されます。したがって、それでもMacを取得できるはずです。

これを考えてみてください:あなたがあなたのウェブサーバーまたはあなたがこれらのIDをカタログ化しているものに連絡することができるときはいつでも、ユーザーは 持ってる 何らかの形のネットワークカードを利用できるようにします。

ああ、CPUシリアル番号の顧客のコンピューターがサポートできる場合があります。

他のヒント

私がしばらく前に持っていたアイデアの1つは使用することです CryptProtectData マシンを識別する方法として。そのAPIの舞台裏で、Microsoftはあなたが探していることをしました。私はそれをテストしたことはありませんでした、そして、それが実際に実行可能であるかどうか興味があります。

基本的に、あなたは一定の魔法の価値をエンコードします CryptProtectDataCRYPTPROTECT_LOCAL_MACHINE, 、その結果、マシンIDが得られます。

マシン自体が提供するものよりももう少し難しいスプーフィングが必要な場合は、おそらくこの目的専用の USB ドングル (単なるフラッシュ ドライブではありません) を用意する必要があります。

WindowsがインストールされているHardDiskのシリアル番号を使用してみませんか?

関数 getVolumeInformation() そのようなシリアル番号を提供します。 Windowsで割り当てられたIDの代わりに、HardDiskベンダーによって割り当てられたIDにアクセスするには、Win32_PhysicalMediaクラスを使用できます。

Windowsがインストールされているドライブを決定するには、関数ExpandEnvironmentStrings()を使用して、変数%Windirを拡張できます。

アーキテクチャが許可する別のオプションは、UUIDCreate()を使用してインストール時間にランダムガイドを生成し、レジストリに永久に保存することです。このGUIDは、レジストリが残る限り、IDとして使用できます。通常、新しいレジストリデータベースは新しいインストールと見なされます。

3番目のオプションは、IDを割り当てるよく知られているサーバーを持つことです。起動すると、ソフトウェアはレジストリ内のIDを検索し、見つからない場合はサーバーに連絡し、MACアドレス、ホスト名、ハードディスクシリアル番号、マシンSID、および任意の数の刻印情報(キー)を提供します。

次に、サーバーは、クライアントが既に登録されているかどうかを判断します。サーバーにはリラックスしたポリシーがあり、たとえば一致のためにほとんどのキーのみを必要とするため、メカニズムはレジストリから完全なワイプが発生した場合でも機能します。交換。

ここでこれまでに発見した本当に簡単でユニークな方法はないと思います。

  1. getVolumeInformationは、一意のIDに近いことさえありません.....
  2. ハードウェアのシリアルを使用することは問題があります。なぜなら、製造業者は常にそれをサポートすることを約束していないため、特にグローバルにユニークに保つために
  3. GetCurrentHWProfileはGUIDを取得しますが、それはマイナーの影響を受ける価値です!ハードウェアの変更...
  4. プロダクトキーを使用すると、盗まれたソフトウェアに対処するためにuをもたらします - 世界中に海賊設備がたくさんあります。
  5. 独自のGUIDの作成とレジストリの下でそれを保存することは(どの場所でも)、画像のクローニングによる重複を妨げません。
    など...私の見解の観点からは、最良の方法は組み合わされています:ボリュームID + Macのリスト +マシンSID +マシン名。そして、明らかにサーバー側のライセンスポリシーを管理します; 0)

よろしくミッケル。

かなり脳死テストのために、OSのProductIDコードとコンピューター名を使用しています。どちらもレジストリから抽出されています。本当に安全ではありませんが、とにかくすべてのふりをしています。

編集

私が読んでいる鍵についてのジョンの質問に答えるために:

ソフトウェア Microsoft Windows nt currentversion productid

System currentControlset Control ComputerName ComputerName ComputerName

CPUのシリアル番号を使用してみませんか。 Microsoftは、必要なアセンブラーコードを実行し、シリアル番号を含むCPUに関するあらゆる種類の情報を返却するために、このAPIを提供していたことを覚えています。 AMDチップで動作するかどうかはわかりませんが、Intel特有のものだったと思います。

確かにCPU IDは安全で静的です!!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top