PC的唯一标识符

问题描述:

我正在寻找设备的唯一标识符,即PC。我看了很多链接堆栈溢出和其他网站,发现生成UUID而不是mac id。但我也发现UUID可能不会与某些主板关联,有时可能无法工作。PC的唯一标识符

我已经实现了MAC ID作为唯一标识符,但现在我认为这可能无法正确工作,因为用户的笔记本电脑可能有时连接到局域网,wifi或加密狗。每次我需要知道机器的唯一标识符。此外,当用户使用Virtual Box连接时,我需要唯一标识符。

+0

这听起来像是一个硬件问题,而不是编程问题 –

+0

你是什么意思的“UUID可能不与某些主板关联”?如果您正在讨论在这些PC上运行的软件,您可以生成一个标识符,将其存储在一个文件中,并且每次都使用该标识符。 – f1sh

+0

非常感谢您的快速回复。 当我在机器上生成唯一的ID并将其存储。然后它可以在任何其他机器上使用,如果该文件传输到该机器 –

如果您使用其中一个或另一个,接口不会被删除。只需循环NetworkInterface.getNetworkInterfaces()并检查是否有与您注册的相同的MAC。

问题可能在于,如果您使用的接口未集成到计算机中。说一个可以移除的加密狗。也许保存所有MAC地址,并检查它们是否存在。虽然那么你可以将一个加密狗移动到另一台电脑上,并且仍然可以得到一个。

如果你想真正由Windows识别您的uuid可以使用cmd命令:

wmic csproduct get UUID 

在java中使用的Runtime.exec( “WMIC csproduct获得UUID”);然后用Process的输出流读取输出并存储它。我没有测试过它,但它应该工作。

+0

感谢您的答案casper.I实施您的解决方案,它工作很好。只是想确认如果我在PC上安装了虚拟盒子,或者我使用的是其他操作系统而不是Windows,它将以相同的独特方式工作。 –

+0

如果您使用其他操作系统,它将无法工作!或者如果你使用虚拟机!它绑定到您的计算机上安装的窗口。 –

+0

这就是推测你使用的命令方式。网络MAC ID很好 –