Mac或主板作为许可用途的唯一标识符?

syn*_*cis 5 .net c# hardware visual-studio-2010

好的,所以我使用MAC地址作为唯一标识符,一切顺利,直到我激活VPN并且mac地址改变了.....

所以,我有两个选择:

1)获取实际物理网卡的MAC地址

对于mac地址,我发现了几个如何实现这一目的的提示:

2.)获取主板ID并使用它,并希望我们不会得到2台具有相同ID的计算机(可能吗?)

public String getMotherBoardID()
{
    String serial = "";
    try
    {
        ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT SerialNumber FROM Win32_BaseBoard");
        ManagementObjectCollection moc = mos.Get();

        foreach (ManagementObject mo in moc)
        {
            serial = mo["SerialNumber"].ToString();
        }
        return serial;
    }
    catch (Exception)
    {
        return serial;
    }
}
Run Code Online (Sandbox Code Playgroud)

你说什么?我应该尝试挖掘并找到从卡中获取mac地址而不是虚拟地址的代码,还是应该切换到主板?而且我不需要结合任何东西,我只需要在目标计算机上不会轻易改变的东西.

Ale*_*lex 2

我认为类似于以下的方法将尽可能安全

  1. 您为用户提供软件的许可证密钥,与客户的名称或公司等相关联
  2. 用户在程序中输入此数据
  3. 每次程序启动时,它都会“打电话回家”发送许可信息
  4. 如果许可证(由您的系统)验证为有效,该软件将收到一些实际上使其能够运行的数据。否则无论如何它都无法工作(某些部件会丢失)。

除非获得许可,否则无法运行的一个例子(从现在开始我正在考虑 C#)是创建一些基本方法extern。您将发送所需的程序集以响应有效的许可证,或者回退到“陷阱!” 警告。