使用Mono创建计算机ID

时间:2014-04-17 19:51:13

标签: mono licensing

我使用.Net框架在C#中开发了一些工具,我正在考虑迁移到Mono。基于兼容性分析器工具(MOMA),唯一的兼容性问题是许可代码:

我使用Window的序列号和其他一些东西来生成计算机ID,然后我用它来生成和管理我的许可证。

显然,Windows将无法在Linux或Mac上使用,因此我需要另一种方法来生成计算机ID。

我可以在单声道中使用什么来创建一个相当可靠的计算机ID?

3 个答案:

答案 0 :(得分:2)

使用MAC地址:

Get MAC Address in linux using mono

对于给定的网络接口而言,这应该是唯一的,这将唯一地标识该机器。

另请参阅单声道中的this thread discussing the pitfalls and issues related to DRM

答案 1 :(得分:2)

您可以使用CPUID和硬盘序列号的组合。

至于你的代码,使用单行代码不会有一种优雅的方式。您必须通过Environment.OSVersion检查您正在运行的平台。然后基于此,分支您的代码以执行特定于系统的访问。例如,要获取CPUID / hdd序列号,请使用WMI查询;或者解析 hdparm -I / dev / hda 的输出并从那里开始。

答案 2 :(得分:1)

您可以使用Microsoft检查Windows XP activation的硬件的一部分。他们检查了10个项目

  • 显示适配器
  • SCSI适配器
  • IDE适配器(实际上是主板)
  • 网络适配器(NIC)及其MAC地址
  • RAM金额范围(即0-64mb,64-128mb等)
  • 处理器类型
  • 处理器序列号
  • 硬盘设备
  • 硬盘卷序列号(VSN)
  • CD-ROM / CD-RW / DVD-ROM

当(重新)安装/激活XP时,它会联系他们的服务器,如果上述7个或更多项目未更改,则无需与任何人通话即可激活。

我个人建议不要使用MAC地址。正如您所提到的,它可以很容易地改变。此外,大多数机器现在有两个或更多网卡(有线和无线)。虚拟化会变得更糟,因为MAC可以比物理更容易地更改(你对虚拟环境的许可有何不同?)

另一个选项是使用UUIDroot file system,而不是检查所有10个硬件组件。这样做的缺点是,如果驱动器出现问题,则需要重新获取许可证。

sudo blkid
/dev/sda1: TYPE="ntfs" UUID="72C0DE8EC0DE57C5" LABEL="windows" 
/dev/sda2: UUID="30fcb748-ad1e-4228-af2f-951e8e7b56df" SEC_TYPE="ext2" TYPE="ext3" 
/dev/sda5: TYPE="swap" UUID="8c4e69f8-5074-42c0-8134-0b2429c4c02c" 
/dev/sdb1: SEC_TYPE="msdos" UUID="4848-E35A" TYPE="vfat"