1

Web アプリケーションをアクティベートするためのライセンス キーを作成中です。物理サーバー、仮想サーバー、共有ホスティング サーバー、および(Azure クラウド ホスティング)ネイティブ クラウド サーバーに展開できます。この製品は、一度に 1 人のユーザーに発行されます。

現在のサーバーのハードウェアを追跡し、ライセンス キーを作成して Web アプリケーションを作成するウィンドウ アプリケーションを作成しました。ハードウェア指紋、ライセンスキー発行の期間を保存します。物理サーバーではこれで問題ありません。それは変化するつもりはありません。

これは、私が検出しているハードウェア印刷リンク検出するためのコードです

  1. メーカー
  2. BiosId
  3. ディスク ID
  4. BaseId
  5. ビデオ ID
  6. MacID

今の問題は、このアプローチを仮想サーバーと(Azure クラウド ホスティング)ネイティブ クラウド サーバーに使用できないことです。

今、私は取得しようとしています

  1. 静的 IP アドレス
  2. ドメイン名
  3. システム別 GUID
  4. ファイルパスの場所 (アプリケーションがインストールされている場所)

この 4 つを使用して、プロダクト キーを作成します。しかし、コンポーネントが一意のライセンスキーを作成するのに適しているかどうかはまだわかりません。

私が見つけたいくつかの制限

  1. (Azure クラウド ホスティング) クラウド サーバーの IP アドレスが変更された場合。静的 IP アドレスがありません
  2. 内部 IP アドレスと外部 IP アドレスを処理する方法

キーの作成に使用できるコンポーネントを知る必要があります。または、クラウドおよび仮想サーバーでハードウェアコンポーネントが変更されたときに使用できる戦略。

4

1 に答える 1

0

各システムには固有の BIOS UUID があります。これは、すべての VM とシステムで一意です。この以下の方法は、システムが仮想PCで実行されていることを検出する方法です public static bool detectVPC() { using (var searcher = new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem")) { using (var items = searcher.Get()) { foreach (var item in items) { string manufacturer = item["Manufacturer"].ToString().ToLower(); if ((manufacturer == "microsoft corporation" && item["Model"].ToString().ToUpperInvariant().Contains("VIRTUAL")) || manufacturer.Contains("vmware") || item["Model"].ToString() == "VirtualBox") { return true; } } } } return false; }

UUID を検出するためのコード:

public static string UUID
    {
        get
        {
            string uuid = string.Empty;

            ManagementClass mc = new ManagementClass("Win32_ComputerSystemProduct");
            ManagementObjectCollection moc = mc.GetInstances();

            foreach (ManagementObject mo in moc)
            {
                uuid = mo.Properties["UUID"].Value.ToString();
                break;
            }

            return uuid;
        }
    }

私の問題を解決します。私はこのコードをテストしました

  1. 仮想PCで
  2. 物理 PC で
  3. 仮想ハードディスクをコピーする
  4. ハードディスクのクローンを作成しました

私は紺碧のクラウドでこのコードをテストし、ホスティングサーバーを共有しました

于 2016-03-19T07:31:16.173 に答える