【问题标题】:Retrieve a unique permanent machine(Laptop/Computer) ID using java使用java检索唯一的永久机器(笔记本电脑/计算机)ID
【发布时间】:2020-01-18 05:58:26
【问题描述】:

我用 JAVA 开发了一个软件,我需要在我的数据库中注册用户机器。

每台用户机器必须是唯一的,如果用户从另一台机器登录,它应该被检测到。

为此,我使用 wmic 命令来获取 ProcessorId 和 Baseboard SerialNumber。

我将基板序列号附加到 processorId 以获得更多唯一性。 但问题是我为 2 台不同的机器获得了相同的 ProcessorId+SerialNumber。
例如:机器 1 = abcd-123
机器 2 = abcd-123

还有底板序列号,提供“N/A”、“Unknown”、“To be field by O.E.M”等输出。

我想到了wmic csproduct get UUID,它给出了主板UUID,
但我害怕重复,因为许多用户已经注册了他们的机器并使用了该软件.

情况
用户 1 已注册机器文本 abcd-123(processorId-basebord Sr No)
现在用户 2 第一次使用不同的机器登录系统 具有相同的机器文本,即 abcd-123
在服务器验证机器时,用户 2 的机器显示为已注册,因此用户 2 无法继续。

请帮我解决问题。

【问题讨论】:

  • 如果这个应用程序可以连接到互联网,你为什么不只是一些基于auto_increment的数据库表,所以每次新用户注册时,你都会得到一个唯一的ID。
  • 不,我需要一台机器来注册一个用户。
  • 使用 Java UUID 将是一个很好的选择。
  • 主板UUID可以重复:nextofwindows.com/…
  • 您应该编辑您的问题以回答我在“Unique Random Identifiers”中给出的六个问题,因为它们将帮助您决定如何最好地生成唯一标识符。例如,如果您有一种简单的方法来检查 ID 的唯一性或者您可以容忍重复 ID 的风险,那么随机 UUID(例如,通过 java.util.UUIDrandomUUID 方法)是合适的。

标签: java windows unique


【解决方案1】:

使用 UUID。

https://www.quora.com/Has-there-ever-been-a-UUID-collision

如果你做对了,它不应该发生冲突,考虑到比你的服务更大的服务,使用它没有问题。

【讨论】:

  • 这个 UUID 是我们的程序可以生成的。我想要主板的 UUID。
  • 为什么?如果您不告诉我们所有要求,我们将无法真正帮助您。
  • 因为我们需要唯一标识一台用户机器,而不仅仅是用户。 我想维护一台针对单个用户注册的机器,这样如果一台机器已经被一个用户注册,其他用户就不能使用同一台机器(笔记本电脑)。如果我们在 java 中使用 UUID.randomUUID() 生成 UUID,我们无法知道这个 UUID id 是从哪台机器生成的,这是主要问题。
【解决方案2】:

为此,我通过 wmic 命令使用了用户机器 uuid。
wmic csproduct 获取 uuid
这对于每个主板都是独一无二的。
如果 UUID 不可用,我使用了 processorId + MobileNo

目前这解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 2023-01-27
    • 2011-12-17
    • 1970-01-01
    • 2012-07-04
    • 2015-01-14
    • 2011-03-29
    相关资源
    最近更新 更多