使用java / jna获取硬件信息以在所有操作系统上运行

时间:2010-08-06 17:27:57

标签: c operating-system uniqueidentifier jna

您好我正在尝试编写一个java applet,它将获得一些硬件信息,mac地址(我已经完成),cpuid主板序列号和硬盘序列号。我知道我需要用jna来做这件事。我的问题是,在c / c ++中是否有一种方法可以获得非平台相关的信息?我见过的所有内容都只适用于Windows,我需要它才能在所有平台上运行。我需要这些信息,因此我可以创建该计算机的唯一ID。任何帮助或正确方向的一点将非常感激。

2 个答案:

答案 0 :(得分:1)

  

我的问题是,c / c ++中有没有办法获取非平台相关的信息?

不可能。哎呀,在同一个PC市场中,查询例如BIOS版本不同于一个MB制造商/ OEM到另一个。如果PC仍然有BIOS - 而不是更新的EFI。

Sun / SPARC是值得注意的例外:他们的H / W具有相对唯一ID,主要用于编制目的。它不是完全独特的(提出另一个观点),因为它可能推断隐私,而Sun别无选择,只能确保它不是全球唯一的。

在世界许多地方,硬件的唯一标识是非法的,因此没有可靠的(最不便携的)方法来实现你想要的。

我认为绑定到MAC地址应该已经足够好了。而这些信息在几乎所有平台上都很容易访问。只要您的许可证检查足够宽松,用户有足够的时间来接收新的许可证密钥(在硬件更换的情况下),应该没有什么问题。

答案 1 :(得分:1)

有一个名为OSHI的项目旨在实现这一目标。它正在寻找撰写* nix implementatoin的贡献者。