java获取电脑部分信息

获取mac地址与cpu序列号

参考博客:https://www.jb51.net/article/94793.htm

另一篇参考地址没记录下来

package util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @todo 获取电脑配置信息
 * @author zhangyanan
 * @date 2018年8月6日
 */
public class CpuUtil {
    private static final Logger logger = LoggerFactory.getLogger(CpuUtil.class);/**
     * @todo 获取电脑cpu序列号
     * @author zhangyanan
     * @date 2018年8月6日
     */
    public static String getCPUSerial() {
        String os = System.getProperty("os.name");
        if (os.toLowerCase().startsWith("win")) {
            return CpuUtil.getWindowsCPUSerial();
        } else {
            return CpuUtil.getLinuxCPUSerial();
        }

    }

    /**
     * @todo windows获取cpu序列号
     * @author zhangyanan
     * @date 2018年8月6日
     */
    public static String getWindowsCPUSerial() {
        String serial = null;
        try {
            Process process = Runtime.getRuntime().exec(new String[] { "wmic", "cpu", "get", "ProcessorId" });
            process.getOutputStream().close();
            Scanner sc = new Scanner(process.getInputStream());
            sc.next();
            serial = sc.next();
            sc.close();
        } catch (Exception e) {
            logger.error("getWindowsCPUSerial异常", e);
        }
        return serial;
    }

    /**
     * @todo linux获取cpu序列号
     * @author zhangyanan
     * @date 2018年8月6日
     */
    public static String getLinuxCPUSerial() {
        String result = "";
        try {
            File file = File.createTempFile("tmp", ".vbs");
            file.deleteOnExit();
            FileWriter fw = new java.io.FileWriter(file);
            String vbs = "Set objWMIService = GetObject(\"winmgmts:\\\\.\\root\\cimv2\")\n"
                    + "Set colItems = objWMIService.ExecQuery _ \n" + "   (\"Select * from Win32_Processor\") \n"
                    + "For Each objItem in colItems \n" + "    Wscript.Echo objItem.ProcessorId \n"
                    + "    exit for  ‘ do the first cpu only! \n" + "Next \n";

            // + " exit for \r\n" + "Next";
            fw.write(vbs);
            fw.close();
            String path = file.getPath().replace("%20", " ");
            Process p = Runtime.getRuntime().exec("cscript //NoLogo " + path);
            BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line;
            while ((line = input.readLine()) != null) {
                result += line;
            }
            input.close();
            file.delete();
        } catch (Exception e) {
            logger.error("getLinuxCPUSerial异常", e);
        }

        return result;
    }

    /**
     * @todo 获取mac地址
     * @author zhangyanan
     * @date 2018年8月6日
     */
    public static String getMACAddress() {
        InetAddress ia;
        try {
            ia = InetAddress.getLocalHost();
            return getMACAddress(ia);
        } catch (UnknownHostException e) {
            logger.error("getMACAddress()异常", e);
            return null;
        }

    }

    /**
     * @todo 获取mac地址
     * @author zhangyanan
     * @date 2018年8月6日
     */
    public static String getMACAddress(InetAddress ia) {
        // 获得网络接口对象(即网卡),并得到mac地址,mac地址存在于一个byte数组中。
        try {
            byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress();

            // 下面代码是把mac地址拼装成String
            StringBuffer sb = new StringBuffer();

            for (int i = 0; i < mac.length; i++) {
                if (i != 0) {
                    sb.append("-");
                }
                // mac[i] & 0xFF 是为了把byte转化为正整数
                String s = Integer.toHexString(mac[i] & 0xFF);
                sb.append(s.length() == 1 ? 0 + s : s);
            }

            // 把字符串所有小写字母改为大写成为正规的mac地址并返回
            return sb.toString().toUpperCase();
        } catch (SocketException e) {
            logger.error("getMACAddress异常!", e);
            return null;
        }
    }
}

原文地址:https://www.cnblogs.com/yanan7890/p/9434205.html

时间: 2024-11-05 19:37:51

java获取电脑部分信息的相关文章

Java获取电脑IP、MAC、各种版本

Java代码获取电脑IP.MAC.各种版本 package com.rapoo.middle.action; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.NetworkInterface; import java.util.ArrayList; import java

java工具类,在Windows,Linux系统获取电脑的MAC地址、本地IP、电脑名

package com.cloudssaas.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.InetAddress; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.rege

使用RXTX获取电脑串口

RXTX是javacomm串口通信的一个扩展 RXTX开发所需文件的下载地址:http://rxtx.qbang.org/wiki/index.php/Download 解压之后可以看到支持各个平台的文件夹: 如果java的安装路径为D:\java\jre7,则将选中的文件夹中的rxtxSerial.dll复制到D:\java\jre7\bin\,       将RXTXcomm.jar复制到D:java\jre\lib\ext\ 然后在项目的lib包中引入RXTXcomm.jar. 1 /**

java 获取服务器时间同步本地计算机时间

http://hi.baidu.com/captives/item/25c8b80170a9b0ccf45ba6f8 -------------------------------------------------------- package dtm.tools;            import java.io.BufferedInputStream;      import java.io.BufferedReader;      import java.io.IOException;

java获取视频第一帧工具类

java获取视频文件第一帧,为了防止黑画面,此例取第五帧,本例子采用maven形式 1. pom.xml 添加引用jar包 jdk采用1.8,日志自行添加即可,这里使用的是log4j2 <!-- log4j2 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.

js/java 获取、添加、修改、删除cookie(最全)

一.cookie介绍 1.cookie的本来面目 HTTP协议本身是无状态的.什么是无状态呢,即服务器无法判断用户身份.Cookie实际上是一小段的文本信息(key-value格式).客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie.客户端浏览器会把Cookie保存起来.当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器.服务器检查该Cookie,以此来辨认用户状态. 2.cookie本来运行机制 当用户第一

java 获取文件名(不包括文件的后缀)和文件重命名

获取文件名(不包括后缀) originalFileName.substring(0, originalFileName.lastIndexOf(".")) 文件重命名 public void renameFile(String file, String toFile) { File toBeRenamed = new File(file); //检查要重命名的文件是否存在,是否是文件 if (!toBeRenamed.exists() || toBeRenamed.isDirector

java获取天气预报数据

获取天气预报数据 对于做web项目有天气数据的需求,这个服务很合适: WebXml.com.cn 2400多个城市天气预报Web服务,包含2300个以上中国城市和100个以上国外城市天气预报数据.数据每2.5小时左右自动更新一次,准确可靠.提供webservice 接口,主连接:http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/ 方法调用说明如下: (1)getRegionCountry :获得国外国家名称和与之对应的ID 说明

Java获取.properties文件

@SuppressWarnings("rawtypes") public static void getProperties() { Properties properties = null; InputStream in = null; try { properties = new Properties(); //获取文件 in = Object.class.getResourceAsStream("/config.properties"); properties