基于Java的唯一计算机ID硬件

基于Java的唯一计算机ID硬件,java,uniqueidentifier,Java,Uniqueidentifier,我需要从一台PC生成一个唯一的代码,我的软件将通过许可证分发,在本地我需要识别环境并将此代码发送到服务器。 我不想在服务器上保留一个序列号,每个客户端都会收到一个序列号,我尝试从网络接口读取MAC地址,但不安全,用户可以轻松更改MAC地址。 我认为最好的方法是读取主板序列号,但我直到现在才找到方法。 有什么建议吗?你的软件值多少钱 目标市场盗版软件多吗 主板序列号读取可以在Windows设备上使用WMI 使用WMI读取序列号 从Java使用WMI 如果Windows XP域成员使用组策略,则

我需要从一台PC生成一个唯一的代码,我的软件将通过许可证分发,在本地我需要识别环境并将此代码发送到服务器。 我不想在服务器上保留一个序列号,每个客户端都会收到一个序列号,我尝试从网络接口读取MAC地址,但不安全,用户可以轻松更改MAC地址。 我认为最好的方法是读取主板序列号,但我直到现在才找到方法。
有什么建议吗?

你的软件值多少钱

目标市场盗版软件多吗

主板序列号读取可以在Windows设备上使用WMI

使用WMI读取序列号

从Java使用WMI

如果Windows XP域成员使用组策略,则WMI在AD域上已断开

(这只影响XP的大多数公司用户,所以没什么大不了的)


希望这有点帮助(MAC地址更简单…但很容易更改)

MAC地址不可靠。 您应该针对无法更改的内容,例如CPU ID或HDD IDE ID。 这是我的意思:


不幸的是,我不认为DLL与Java一起工作,但至少它会向您显示一些关于什么是可靠的,什么是不可靠的信息。

还要注意,计算机可能有许多网络接口(因此有许多MAC地址),或者没有。是的,但是,如果计算机没有网络接口,我无法检索号码。您是否承诺编写自己的许可证方案?我认为有一些不错的开源解决方案。在安装时创建一个长的随机字符串,并将其存储在本地计算机上?@Rigoni:我在这里约会,但看看PPP和MAC地址的奇怪之处。您可以在没有物理网络适配器的情况下连接Internet。是的,这是一种类似cassino计算器策略的策略软件。是多平台的,对于windows,此解决方案将很有用,但对于其他平台没有。我将尝试此解决方案,并尝试其他操作系统解决方案。很多坦克。你能详细说明一下WMI是怎么坏的吗。我一直找不到这个bug的引用。有很多地方WMI just flat无法报告您期望的信息。更复杂的是,每个service pack(以及不幸的定期更新数量)都对WMI报告的内容进行了更改。除非你对客户端上安装的东西有非常严格的控制,否则WMI可能会让人抓狂。如果你想让XP机器成为AD域的一部分,请应用一些组策略和宾果,WMI不起作用(特别是对于许多应用安装程序)。CPU ID不会给你唯一的序列号。该ID仅用于识别正在使用的处理器的确切类型。此外,硬盘驱动器1不可靠,因为它可能因使用RAID控制器而不可用