检测为物理服务器、虚拟服务器、共享主机服务器和本机云 Web 应用程序生成许可证密钥的指纹



我正在研究用于激活 Web 应用程序的许可证密钥。它可以部署在物理服务器,虚拟服务器,共享托管服务器和(Azure云托管)本机云服务器上。本产品一次发给一个用户。

我创建了窗口应用程序,该应用程序跟踪硬件指纹当前服务器并创建Web应用程序的许可证密钥。 其中存储硬件指纹,许可证密钥问题的时间段。这在物理服务器中很好。它不会是改变。

这是检测硬件打印链接的代码我正在检测

  1. 制造者
  2. 生物标识
  3. 磁盘标识
  4. 基本标识
  5. 视频标识
  6. MacId

现在的问题是我不能对虚拟服务器和(Azure 云托管)本机云服务器使用此方法。

现在我正试图得到

  1. 静态 IP 地址
  2. 域名
  3. 按系统划分的图形用户界面
  4. 文件路径的位置(安装应用程序的位置)

通过使用这四个,我创建了产品密钥。 但我仍然不知道这个组件是否适合创建唯一的许可证密钥。

我发现的一些限制

  1. 如果(Azure 云托管)云服务器 IP 地址已更改。 它没有静态 IP地址
  2. 如何处理内部 IP 地址和外部 IP 地址

只是我需要知道我可以使用哪个组件来创建密钥。 或者当硬件组件在云和虚拟服务器上发生变化时,我可以使用什么策略。

每个系统都有唯一的 BIOS UUID。这在所有虚拟机和系统中都是唯一的。下面的方法是我们如何检测系统是否在虚拟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. 在维鲁阿尔电脑
  2. 在物理 PC 中
  3. 复制虚拟硬盘
  4. 创建了硬盘克隆

我确实在 Azure 云和共享托管服务器中测试了此代码

相关内容

最新更新