C# Mac或主板作为唯一标识符用于许可目的?
好的,所以我使用MAC地址作为唯一标识符,一切都很顺利,直到我激活了VPN,MAC地址发生了变化 因此,我有两个选择: 1) 获取实际物理网卡的MAC地址 对于mac地址,我找到了一些关于如何实现这一点的提示:C# Mac或主板作为唯一标识符用于许可目的?,c#,.net,visual-studio-2010,hardware,C#,.net,Visual Studio 2010,Hardware,好的,所以我使用MAC地址作为唯一标识符,一切都很顺利,直到我激活了VPN,MAC地址发生了变化 因此,我有两个选择: 1) 获取实际物理网卡的MAC地址 对于mac地址,我找到了一些关于如何实现这一点的提示: 2.)获取主板ID并使用它,希望我们不会得到两台具有相同ID的计算机(可能吗?) 你怎么说?我应该试着挖掘并找到从卡上而不是虚拟卡上获取mac地址的代码,还是应该切换到主板上?我不需要组合任何东西,我只需要在目标计算机上不容易更改的东西。如果您可以使用主板、NIC和硬盘驱动器的值
你怎么说?我应该试着挖掘并找到从卡上而不是虚拟卡上获取mac地址的代码,还是应该切换到主板上?我不需要组合任何东西,我只需要在目标计算机上不容易更改的东西。如果您可以使用主板、NIC和硬盘驱动器的值的组合,那就更好了
您可以查看这篇文章:使用microsoft为此提供的一些工具。它们使用硬件标识符的组合。Mac电脑不好,因为它们通常可以更换。微软一定会有一些唯一的安装标识符
我认为类似于以下的方法将是最安全的
一个例子(我想从现在开始C)就是,除非获得许可,否则无法运行,这将是使用一些基本方法
extern
。您将发送所需的程序集以响应有效的许可证,或退回到“Gotcha!”警告。我个人将执行以下操作
个人开发了一些类似的东西,它跟踪10种不同的东西(包括软件属性),带有一些允许更改的逻辑。在第一个版本中,WMI的使用完全失败。别忘了MAC地址可以通过编程或更改NIC轻松更改。我认为这样做是浪费精力——你故意花时间编写反功能,这些功能很少被盗版软件绕过。当它不能正常工作时,它唯一能做的就是惹恼你的付费客户。最好花些时间添加一些功能,让人们相信你的软件很棒,值得花钱购买。@Flexo:我明白你的意思,但我不同意。当然,技术娴熟的“海盗”可以很容易地绕过这一点,但这超出了重点。这一点是为了刺激临时用户为产品付费。如果有人决心破坏程序,他们会的,如果有人决心找到漏洞,他们会的,但那不是你的客户。临时客户也会偶尔更换他们的机器。您确定要将软件按许可证绑定到一台计算机上吗?您将如何允许将许可证转移到新机器上?@DanPuzey:是的,当他们将许可证从一台机器转移到另一台机器上时,问题就出现了,但主板id不是一个好主意吗?请记住,您是在识别特定的操作系统安装,而不是硬件,而不是用户。是的。但是硬件是一个不好的授权目标。我也不会使用这种跟踪来自动强制授权,只是打电话回家,确保人们只对一个活动安装使用一个许可证密钥。WMI是一个糟糕的主意,它很可能在你的目标机上不起作用。
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;
}
}