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

Posted

tags:

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

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

可以的

IMonitorService接口:  
public interface IMonitorService   
public MonitorInfoBean getMonitorInfoBean() throws Exception;  
  
MonitorInfoBean类:  
/*采集系统存取数据JavaBean*/  
public class MonitorInfoBean implements Comparable<MonitorInfoBean>   
/** 操作系统. */  
private String osName;  
/** 总的物理内存. */  
private float totalMemorySize;  
/** 已使用的物理内存. */  
private float usedMemory;  
/** cpu使用率. */  
private double cpuRatio;  
/** 主机IP地址 */  
private String mIpAddress;  
/** 数据存储时间 */  
private String dDateTime;  
/**内存使用率*/  
private float memoryRatio;  

/**linux下Buffers内存*/  
private float buffersMemory;   

/**linux下Cached内存*/  
private float cachedMemory;  

public float getBuffersMemory()   
   return buffersMemory;  
  
public float getCachedMemory()   
   return cachedMemory;  
  
public String getDDateTime()   
   return dDateTime;  
  
public void setDDateTime(String dateTime)   
   dDateTime = dateTime;  
  
public String getMIpAddress()   
   return mIpAddress;  
  
public void setMIpAddress(String ipAddress)   
   mIpAddress = ipAddress;  
  
public String getOsName()   
   return osName;  
  
public void setOsName(String osName)   
   this.osName = osName;  
  
public float getTotalMemorySize()   
   return totalMemorySize;  
  
public void setTotalMemorySize(float totalMemorySize)   
   this.totalMemorySize = totalMemorySize;  
  
public float getUsedMemory()   
   return usedMemory;  
  
public void setUsedMemory(long usedMemory)   
   this.usedMemory = usedMemory;  
  
public double getCpuRatio()   
   return cpuRatio;  
  
public void setCpuRatio(double cpuRatio)   
   this.cpuRatio = cpuRatio;  
  
public int compareTo(MonitorInfoBean m)   
   String stra = this.getDDateTime();  
   String strb = m.getDDateTime();  
   Timestamp a = Timestamp.valueOf(stra);  
   Timestamp b = Timestamp.valueOf(strb);  
   if (a.before(b))   
    return -1;  
    else if (a.after(b))   
    return 1;  
    else   
    return 0;  
     
  
public float getMemoryRatio()   
   return memoryRatio;  
  
public void setMemoryRatio(float memoryRatio)   
   this.memoryRatio = memoryRatio;  
  
public void setUsedMemory(float usedMemory)   
   this.usedMemory = usedMemory;  
  
public void setBuffersMemory(float buffersMemory)   
   this.buffersMemory = buffersMemory;  
  
public void setCachedMemory(float cachedMemory)   
   this.cachedMemory = cachedMemory;  
  

  

import java.io.BufferedReader;  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.InputStreamReader;  
import java.io.LineNumberReader;  
import java.net.Inet6Address;  
import java.net.InetAddress;  
import java.net.NetworkInterface;  
import java.net.SocketException;  
import java.net.UnknownHostException;  
import java.util.Enumeration;  
import java.util.StringTokenizer;  
import sun.management.ManagementFactory;  
import com.sun.management.OperatingSystemMXBean;
参考技术A Windows下只能通过API来取得硬件信息,所以Java可以使用JNI,通过VC写的DLL来取得硬件信息。本回答被提问者采纳 参考技术B Windows下只能通过API来取得硬件信息,所以Java可以使用JNI,通过VC写的DLL来取得硬件信息。

Java本身并不能获得如此多的信息,通过JNI的方式调用本地接口的方式实现

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如何取得计算机硬件信息么的主要内容,如果未能解决你的问题,请参考以下文章

java 通用取得 系统硬件信息及 jvm 信息的 jar 包 oshi-core

java中如何获得计算机的信息。

如何查看安卓手机硬件ID

计算机硬件信息查询方法

查看手机硬件信息方法

深入理解Java跨平台原理