java如何读取硬件信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java如何读取硬件信息相关的知识,希望对你有一定的参考价值。

我现在做一个付费的桌面应用的项目,希望能实现“注册码”的功能,别人在没有得到我的许可的情况下,得不到注册码,也就无法使用软件了。还有,我看别的软件有的只认一台计算机,如果在别的机器上安装就失效了,能给详细介绍下:需要哪些技术。
非常感谢,我只有60分,全部献出!

桌面程序的话,很难实现,因为程序无法判断在其他没有连在一起的机器上有没有安装,就是说别人脱机安装(并修改硬件信息)就能破解“在别的机器上安装就失效”这个功能,你可以在对方发来机器信息和用户信息后单独给他安装程序,这样就保证了程序版本的单一性

Java读取硬件信息(JDK5+)
System.getProperty(String src);
(以下为src对应的系统信息,例如System.getProperty("java.version")表示Java 运行时环境版本信息)
java.version:Java 运行时环境版本
java.vendor:Java 运行时环境供应商
java.vendor.url:Java 供应商的 URL
java.home:Java 安装目录
java.vm.specification.version:Java 虚拟机规范版本
java.vm.specification.vendor:Java 虚拟机规范供应商
java.vm.specification.name:Java 虚拟机规范名称
java.vm.version:Java 虚拟机实现版本
java.vm.vendor:Java 虚拟机实现供应商
java.vm.name:Java 虚拟机实现名称
java.specification.version:Java 运行时环境规范版本
java.specification.vendor:Java 运行时环境规范供应商
java.specification.name:Java 运行时环境规范名称
java.class.version:Java 类格式版本号
java.class.path:Java 类路径
java.library.path:加载库时搜索的路径列表
java.io.tmpdir:默认的临时文件路径
java.compiler:要使用的 JIT 编译器的名称
java.ext.dirs:一个或多个扩展目录的路径
os.name:操作系统的名称
os.arch:操作系统的架构
os.version:操作系统的版本
file.separator:文件分隔符(在 UNIX 系统中是“/”)
path.separator:路径分隔符(在 UNIX 系统中是“:”)
line.separator:行分隔符(在 UNIX 系统中是“/n”)
user.name:用户的账户名称
user.home:用户的主目录
user.dir:用户的当前工作目录
参考技术A 把这个方法放到你的类下边

public void testGetSysInfo()
//这个是信息变量
String address = "";
//获得系统名称
String os = System.getProperty("os.name");
if (os != null && os.startsWith("Windows"))

//抓异常
try

//定义dos命令
String command = "cmd.exe /c ipconfig /all";

//执行dos命令
Process p = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(p
.getInputStream()));
String line;
while ((line = br.readLine()) != null)
if (line.indexOf("Physical Address") > 0)
int index = line.indexOf(":");
index += 2;
address = line.substring(index);
break;


br.close();
logger.info("mac address:" + address.trim());
catch (IOException e)
logger.info("Error:" + e);


参考技术B 不能直接读取,
java交互硬件,你是指操作系统的硬件还是第三方的硬件?
一般来讲java的出发点是安全的编程语言,也就是底层一些接口没有提供可使用的api
那么如果我们业务确实有这种需求,
如果是第三方的硬件,可以要求提供商提供相关接口,如果是类似是你指的操作系统,
可以使用c来实现,然后通过java来调用c代码实现交互硬件。
参考技术C 用java做恐怕比较难啊!
你可以做一个dll,然后用java调dll来实现你的功能。
参考技术D 楼主看看这个
好像是能读出机器的一些信息
http://www.rgagnon.com/javadetails/java-0580.html本回答被提问者采纳

java如何获取Linux操作系统下的硬件信息

参考技术A 引入包:
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Map;
import java.util.Properties;
import org.hyperic.sigar.CpuInfo;
import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.FileSystem;
import org.hyperic.sigar.FileSystemUsage;
import org.hyperic.sigar.Mem;
import org.hyperic.sigar.NetFlags;
import org.hyperic.sigar.NetInterfaceConfig;
import org.hyperic.sigar.NetInterfaceStat;
import org.hyperic.sigar.OperatingSystem;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
import org.hyperic.sigar.Swap;
import org.hyperic.sigar.Who;

代码太长 了,不给贴出来。相关的代码太多了,github一抓一大把。

以上是关于java如何读取硬件信息的主要内容,如果未能解决你的问题,请参考以下文章

怎么用Java获取iOS设备的硬件信息?

java如何获取Linux操作系统下的硬件信息

如何用 python 读取硬件信息

Java如何取得计算机硬件信息么

安卓10限制APP读取硬件信息是真的吗?

《自拍教程43》adb命令_一键读取硬件配置