Java使用dos(cmd wmic)获取计算机(Windows)硬件信息

2023-11-19

接上篇Java使用Bash获取Linux硬件序列号信息icon-default.png?t=M1H3https://blog.csdn.net/rick_xk/article/details/122997441

本文使用cmd中wmic命令获取Win系统下硬件信息

1.wmic命令获取Win系统下硬件信息

1、查询网卡信息:wmic nicconfig get macaddress
2、查询cpu序列号:wmic cpu get processorid
3、查询主板序列号:wmic baseboard get serialnumber
4、查询BIOS序列号:wmic bios get serialnumber

2.使用Java调用dos命令,得到硬件信息

 调用形式上,和调用Linux命令是一致的,需要关注的点有两个地方,启动命令从 "/bin/sh" 变为 "cmd.exe",返回流中需要注意编码设置为 "GBK"。

/**
 * 执行dos 命令
 * @date 2022年2月18日上午9:06:31
 * @param cmd 命令Str
 * @return
 */
private static String exec(String cmd) {
	try {
		String[] cmdA = { "cmd.exe", "/c", cmd };
		Process process = Runtime.getRuntime().exec(cmdA);
		LineNumberReader br = new LineNumberReader(new InputStreamReader(process.getInputStream(), "GBK"));
		StringBuffer sb = new StringBuffer();
		String line;
		while ((line = br.readLine()) != null) {
//				System.out.println(line);
			line = line.trim();
			if(line.length() > 0){
				sb.append(line).append("\n");
			}
		}
		return sb.toString();
	} catch (Exception e) {
		e.printStackTrace();
	}
	return null;
}

/**
 * 获取Mac地址
 * @date 2022年2月18日上午10:56:21
 * @return
 */
public static String getMacAddress(){
	final String dosCmd = "wmic nicconfig get macaddress";
	String netsString = exec(dosCmd);
	
	return netsString;
}

/**
 * 获取CPU ID
 * @date 2022年2月18日上午10:56:32
 * @return
 */
public static String getCpuProcessorId(){
	final String dosCmd = "wmic cpu get processorid";
	String netsString = exec(dosCmd);
	
	return netsString;
}

/**
 * 获取主板序列号
 * @date 2022年2月18日上午10:56:46
 * @return
 */
public static String getBaseBoardSerialnumber(){
	final String dosCmd = "wmic baseboard get serialnumber";
	String netsString = exec(dosCmd);
	
	return netsString;
}

/**
 * 获取Bios序列号
 * @date 2022年2月18日上午10:56:57
 * @return
 */
public static String getBiosSerialnumber(){
	final String dosCmd = "wmic bios get serialnumber";
	String netsString = exec(dosCmd);
	
	return netsString;
}


public static void main(String[] args) {
	System.out.println("==========获得值=============");
	String macAddress = getMacAddress();
	String cpuProcessorId = getCpuProcessorId();
	String baseBoardSerialnumber = getBaseBoardSerialnumber();
	String biosSerialnumber = getBiosSerialnumber();
	
	System.out.println(macAddress);
	System.out.println(cpuProcessorId);
	System.out.println(baseBoardSerialnumber);
	System.out.println(biosSerialnumber);
}

得到运行结果为:

==========获得值=============
MACAddress
40:65:20:52:41:53
44:59:20:52:41:53
48:D0:20:52:41:53
A4:B1:C1:B7:E7:C4
A4:B1:C1:B7:E7:C5
54:05:DB:36:3C:3C
A6:B1:C1:B7:E7:C4
00:FF:9A:76:B0:1A
00:FF:46:1B:2E:3C

ProcessorId
BFEBFBFF000806EC

SerialNumber
L1HF08W009A

SerialNumber
PF1A8XRQ

 3.信息格式化

根据自身需要不同,做对应数据的格式化即可。

4.不同电脑上的结果对比

因为我和同事电脑为同批采购,硬件配置一致,在对比结果之后,发现 CpuProcessorId 值为相同值,其余值均不相同;由此判断 CpuProcessorId 应该不是CPU序列号,在网上搜索之后,也没有得到准确的答案。

5.后记

CPU序列号被屏蔽后,同批CPU编号就是相同的了
取网卡的MAC地址也不可靠,取到的不是网卡物理的MAC,而是系统中的(可修改);
取硬盘的序列号也不是很灵,有的硬盘取不到,而且取到的序列号长度也不同;

以上内容来源于网络,如果需要做加密的话,需要谨慎考虑。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java使用dos(cmd wmic)获取计算机(Windows)硬件信息 的相关文章

随机推荐

  • 使用google的免费GPU

    1 打开网页 输入Google colab 2 点击 修改 gt 笔记本设置 3 点击使用GPU 常用命令 print torch version print torch cuda is available
  • 1.centos7安装docker

    本文目录 1 docker 安装 1 安装步骤 2 安装是否成功校验 3 docker加速配置 4 hello world来袭 验证安装是否ok 2 卸载docker 3 卸载较旧版本docker 使用docker必备的三个官方网站 doc
  • 无线路由、AP、网桥之区别详解篇

    通过无线上网冲浪 现在已经不是新鲜的事情 随着近一两年无线 网络的飞速发展 从企业到家庭都开始在不同的领域体验着 自由上网 的乐趣 笔者接触无线网络也有一段时间了 经常在一些无线论坛逛游 无论是在现实生活还是在论坛中 总会有朋友不断的问这样
  • HyperLedger Fabric 实践错误收集

    HyperLedger Fabric 实践错误收集 在ubuntu中通过docker compose启动容器的时候报错 ERROR for cli Cannot create container for service cli Confli
  • 光模块之SR、LRM、LR、ER 、ZR对比介绍

    SFP介绍 现有的ARUBA 原来的HP 万兆模块有多种 除了MMF表示多模SMF表示单模 SR LRM LR ER等都代表什么意思 本文做个简单对比介绍 将帮助您根据您的实际需要选择合适的10G SFP 模块 Aruba 10G SFP
  • 英语软件的日志怎么写

    今天一个外企个小伙伴跑来跟我说 老板说他的程序里的英语写的太烂 让我教他怎么写日志 虽然我自己用英语写log 也还马马虎虎 但是让我系统的介绍 我也犯了难 好在 我做过自然语言处理 NLP 也做过针对计算机系统的日志的挖掘 所以我知道有个东
  • Lua脚本在redis中的使用学习

    Lua脚本在redis中的使用学习 0 前言 不同于之前遇到的redisTemplate的简单set get方法 这里是使用Redis脚本执行redis操作 DefaultRedisScript
  • Linux宝塔面板 网址忘记了,或者账号密码错误怎么办?

    在linux中安装宝塔面板后会生成网址 账号和密码 如果网址忘记了那将进不去宝塔面板 bt 命令 输入bt后 在输入14就可以查看宝塔面板详细信息 root localhost bt 宝塔面板命令行 1 重启面板服务 8 改面板端口 2 停
  • struts2-输入校验、xml校验的使用

    1 输入校验 直接在Action类里添加相应的方法 这里定义了一个中间变量 前面我直接返回SUCCESS ERROR会报错 具体我还要研究一下 struts xml login jsp 2 xml校验 在XXAction的同级目录下 建立X
  • Qt Desginer布局方法

    关于Qt Desginer中的布局方法 网上教程少之又少 个人经过反复的实践和摸索 觉得可以用一句话来概括 先不断地进行小布局 然后对整体进行大布局 先不断地进行小布局的目的就是将同为一组的控件按某个格式排列使界面干净有序 同时方便以后对整
  • [教程]Hexo + Github 搭建自己的专属博客

    教程 Hexo Github 搭建自己的专属博客 文章目录 教程 Hexo Github 搭建自己的专属博客 1 安装Git和NodeJS 2 安装Hexo 3 加载主题 4 修改主题配置 5 将博客部署在GitHub上 6 写文章并上传
  • 在Mac上安装MongoDB

    1 访问MongoDB官方下载地址 http www mongodb org downloads 2 解压文件mongodb osx ssl x86 64 4 0 9 tgz 解压之后会变成mongodb osx x86 64 4 0 9文
  • MQTT协议详解一

    首先给出MQTT协议的查看地址 http public dhe ibm com software dw webservices ws mqtt mqtt v3r1 html 当然也有PDF版的 百度一下 不过个人感觉还是官网上的字体和排版最
  • kata-containers的阿里云镜像仓库地址

    kata containers的阿里云镜像仓库地址 关键字 kata containers 阿里云 镜像 kata containers需要安装在Centos8 如下为 etc yum repos d kata containers的内容
  • MHA + mysql5.7 一主二从配置安装日志

    MHA mysql5 7 一主二从配置安装步骤 1 安装mysql5 7 2 配置主从复制开启gtid 半同步复制 3 配置三台机器的互信 4 安装MHA node节点 5 安装MHA manger节点 6 利用MHA工具检测SSH 7 利
  • Maven中poi爆红以及 dependencyManagement 标签使用

    这个是在父工程中导入poi 07 版本的时候爆红 在父工程中导入poi07版本的时候死活下载不了依赖导致爆红 业务场景 项目中依赖包版本号判断途径 多模块情况 与 dependencies 标签下 dependency 的区别 在父工程中导
  • 运行yolov5_deepsort报错AttributeError: ‘Detect‘ object has no attribute ‘m‘

    我自己训练的模型在自己的代码里面能进行预测 但是在运行yolov5 deepsort的时候报错AttributeError Detect object has no attribute m 报错详情 Traceback most recen
  • unity,给button添加点击功能的办法

    以下是使用代码添加按钮功能的一个简单例子 创建一个空对象 并添加一个Button组件 命名为 MyButton 创建一个脚本文件 命名为 ButtonManager 在ButtonManager脚本中添加以下代码 using UnityEn
  • 蓝桥杯单片机第14届省赛客观题目+程序题目+程序题参考答案

    目录 客观题题目 程序题题目 程序题参考答案 main h main c Init h Init c SMG h SMG c DSQ h DSQ c YanShi h YanShi c JZKey h JZKey c ds1302 h ds
  • Java使用dos(cmd wmic)获取计算机(Windows)硬件信息

    接上篇Java使用Bash获取Linux硬件序列号信息https blog csdn net rick xk article details 122997441 本文使用cmd中wmic命令获取Win系统下硬件信息 1 wmic命令获取Wi