为了账号安全,请及时绑定邮箱和手机立即绑定

真的有什么方法可以唯一地识别任何计算机吗?

真的有什么方法可以唯一地识别任何计算机吗?

扬帆大鱼 2019-12-03 14:48:24
问题是,某些已接受的答案已建议将MAC地址作为唯一的标识符,这是完全不正确的。其他一些答案建议使用似乎更合乎逻辑的各种组件的组合。但是,在使用组合的情况下,应考虑哪个组件自然不可能经常更改。几天前,我们为软件许可问题开发了一个密钥生成器,其中我们使用CPUID和MAC的组合来唯一地标识Windows pc,直到实际测试,我们认为我们的方法足够好。具有讽刺意味的是,当我们进行测试时,我们发现三台计算机使用我们的密钥生成器返回了相同的ID!那么,真的有什么方法可以唯一地识别任何一台计算机吗?现在,我们只需要使我们的密钥生成器在Windows pc上运行即可。由于我们的系统是在.net上开发的,因此使用c#的某种方式(如果可能的话)会很棒。更新:很抱歉造成一些混乱和明显的错误警报。我们在检索硬件信息的方法中发现了一些错误。最初,我想删除此问题,因为现在我自己的困惑已经消失,并且我确实相信两个或多个组件的组合足以识别计算机。但是,后来我决定保留它,因为我认为我应该弄清楚是什么引起了该问题,因为将来同样的事情可能会伤害其他人。这是我们正在做的(不包括其他代码):我们正在使用一个getManagementInfo函数来检索MAC和处理器IDprivate String getManagementInfo(String StrKey_String, String strIndex)    {        String strHwInfo = null;        try        {            ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from " + StrKey_String);            foreach (ManagementObject share in searcher.Get())            {                strHwInfo += share[strIndex];            }        }        catch (Exception ex)        {            // show some error message        }        return strHwInfo;    } 然后在需要的地方使用该函数检索MAC地址string strMAC = getManagementInfo("Win32_NetworkAdapterConfiguration", "MacAddress");并检索ProcessorIDstring strProcessorId = getManagementInfo("Win32_Processor", "ProcessorId");此时,strMAC如果存在多个MAC地址,则将包含多个MAC地址。我们只取了一个17个字符(12个MAC数字和5个冒号)。strMAC = strMAC.Length > 17 ? strMAC.Remove(17) : strMAC;这是我们犯错的地方。因为getManagementInfo("Win32_NetworkAdapterConfiguration", "MacAddress")返回的是一些确实在使用的额外MAC地址。例如,当我们在命令提示符下逐个getmac命令搜索MAC地址时,它会为每台PC显示一个或两个不同的MAC地址。但是getManagementInfo("Win32_NetworkAdapterConfiguration", "MacAddress")返回了四到五个MAC地址,其中一些地址对于所有计算机都是相同的。由于我们只是获取了函数返回的第一个MAC地址,而不是检查其他任何内容,因此strMAC偶然获取了相同的MAC地址。但是,对于相同的处理器ID问题,我绝对正确。当我们wmic cpu get ProcessorId在命令提示符下输入命令时,这三个命令都返回了相同的处理器ID 。现在我们决定使用主板序列号而不是处理器ID来与MAC地址结合使用。我认为可以通过这种方式达到我们的目的,如果在某些情况下不这样做,那么在少数情况下我们应该放手。
查看完整描述

3 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

获得全局唯一ID的事实是,只有MAC地址才是ID,如果您全面设置系统,则该ID不会更改。如果要为特定产品生成密钥,则最好的方法是为产品分配唯一的ID,然后将产品ID与MAC地址结合在一起。希望能帮助到你。


查看完整回答
反对 回复 2019-12-03
?
HUWWW

TA贡献1874条经验 获得超12个赞

我完全同意以上评论。


对于软件许可,您可以使用:


计算机MAC地址(如果有多个NIC卡,则全部取用)+您的软件产品代码


大多数著名的电信供应商都在使用这种技术。


查看完整回答
反对 回复 2019-12-03
  • 3 回答
  • 0 关注
  • 797 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信