1. package com.szht.gpy.util;
  2.  
  3. import java.applet.Applet;
  4. import java.awt.Graphics;
  5. import java.io.BufferedReader;
  6. import java.io.File;
  7. import java.io.FileWriter;
  8. import java.io.InputStreamReader;
  9. import java.net.InetAddress;
  10. import java.net.NetworkInterface;
  11.  
  12. public class HardWareUtils extends Applet {
  13. public HardWareUtils(){
  14. }
  15. private static final long serialVersionUID = 1L;
  16.  
  17. @Override
  18. public void paint(Graphics paint) {
  19. super.paint(paint);
  20. paint.drawString("获取硬件信息", 10, 10);
  21. paint.drawString("CPU SN:" + HardWareUtils.getCPUSerial(), 10, 30);
  22. paint.drawString("主板 SN:" + HardWareUtils.getMotherboardSN(), 10, 50);
  23. paint.drawString("C盘 SN:" + HardWareUtils.getHardDiskSN("c"), 10, 70);
  24. paint.drawString("MAC SN:" + HardWareUtils.getMac(), 10, 90);
  25. }
  26.  
  27. /**
  28. * 获取主板序列号
  29. *
  30. * @return
  31. */
  32. public static String getMotherboardSN() {
  33. String result = "";
  34. try {
  35. File file = File.createTempFile("realhowto", ".vbs");
  36. file.deleteOnExit();
  37. FileWriter fw = new java.io.FileWriter(file);
  38. String vbs = "Set objWMIService = GetObject(\"winmgmts:\\\\.\\root\\cimv2\")\n"
  39. + "Set colItems = objWMIService.ExecQuery _ \n"
  40. + " (\"Select * from Win32_BaseBoard\") \n"
  41. + "For Each objItem in colItems \n"
  42. + " Wscript.Echo objItem.SerialNumber \n"
  43. + " exit for ' do the first cpu only! \n" + "Next \n";
  44.  
  45. fw.write(vbs);
  46. fw.close();
  47. Process p = Runtime.getRuntime().exec(
  48. "cscript //NoLogo " + file.getPath());
  49. BufferedReader input = new BufferedReader(new InputStreamReader(p
  50. .getInputStream()));
  51. String line;
  52. while ((line = input.readLine()) != null) {
  53. result += line;
  54. }
  55. input.close();
  56. } catch (Exception e) {
  57. e.printStackTrace();
  58. }
  59. return result.trim();
  60. }
  61.  
  62. /**
  63. * 获取硬盘序列号
  64. *
  65. * @param drive
  66. * 盘符
  67. * @return
  68. */
  69. public static String getHardDiskSN(String drive) {
  70. String result = "";
  71. try {
  72. File file = File.createTempFile("realhowto", ".vbs");
  73. file.deleteOnExit();
  74. FileWriter fw = new java.io.FileWriter(file);
  75.  
  76. String vbs = "Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n"
  77. + "Set colDrives = objFSO.Drives\n"
  78. + "Set objDrive = colDrives.item(\""
  79. + drive
  80. + "\")\n"
  81. + "Wscript.Echo objDrive.SerialNumber"; // see note
  82. fw.write(vbs);
  83. fw.close();
  84. Process p = Runtime.getRuntime().exec(
  85. "cscript //NoLogo " + file.getPath());
  86. BufferedReader input = new BufferedReader(new InputStreamReader(p
  87. .getInputStream()));
  88. String line;
  89. while ((line = input.readLine()) != null) {
  90. result += line;
  91. }
  92. input.close();
  93. } catch (Exception e) {
  94. e.printStackTrace();
  95. }
  96. return result.trim();
  97. }
  98.  
  99. /**
  100. * 获取CPU序列号
  101. *
  102. * @return
  103. */
  104. public static String getCPUSerial() {
  105. String result = "";
  106. try {
  107. File file = File.createTempFile("tmp", ".vbs");
  108. file.deleteOnExit();
  109. FileWriter fw = new java.io.FileWriter(file);
  110. String vbs = "Set objWMIService = GetObject(\"winmgmts:\\\\.\\root\\cimv2\")\n"
  111. + "Set colItems = objWMIService.ExecQuery _ \n"
  112. + " (\"Select * from Win32_Processor\") \n"
  113. + "For Each objItem in colItems \n"
  114. + " Wscript.Echo objItem.ProcessorId \n"
  115. + " exit for ' do the first cpu only! \n" + "Next \n";
  116. fw.write(vbs);
  117. fw.close();
  118. Process p = Runtime.getRuntime().exec(
  119. "cscript //NoLogo " + file.getPath());
  120. BufferedReader input = new BufferedReader(new InputStreamReader(p
  121. .getInputStream()));
  122. String line;
  123. while ((line = input.readLine()) != null) {
  124. result += line;
  125. }
  126. input.close();
  127. file.delete();
  128. } catch (Exception e) {
  129. e.fillInStackTrace();
  130. }
  131. if (result.trim().length() < 1 || result == null) {
  132. result = "无CPU_ID被读取";
  133. }
  134. return result.trim();
  135. }
  136.  
  137. /**
  138. * 获取MAC地址
  139. */
  140. public static String getMac() {
  141. try {
  142. byte[] mac = NetworkInterface.getByInetAddress(InetAddress.getLocalHost()).getHardwareAddress();
  143. StringBuffer sb = new StringBuffer();
  144. for (int i = 0; i < mac.length; i++) {
  145. if (i != 0) {
  146. sb.append("-");
  147. }
  148. String s = Integer.toHexString(mac[i] & 0xFF);
  149. sb.append(s.length() == 1 ? 0 + s : s);
  150. }
  151. return sb.toString().toUpperCase();
  152. } catch (Exception e) {
  153. return "";
  154. }
  155.  
  156. }
  157.  
  158. public static void main(String[] args) throws Exception {
  159. System.out.println(getCPUSerial());//CPU
  160. System.out.println(getMotherboardSN());//主板
  161. System.out.println(getHardDiskSN("c"));//c盘
  162. System.out.println(getMac());//MAC
  163. String msg = getCPUSerial()+getMotherboardSN().replace(".", "")+getHardDiskSN("c")+getMac().replace("-", "");
  164. System.out.println("原始数据:"+msg);
  165.  
  166. String encrypt = DesUtil.encrypt(msg);
  167. System.out.println("加密:"+encrypt);
  168. String decrypt = DesUtil.decrypt(encrypt);
  169. System.out.println("解密:"+decrypt);
  170. }
  171. }

Java获取电脑硬件信息的更多相关文章

  1. C#获取电脑硬件信息(CPU ID、主板ID、硬盘ID、BIOS编号)

    最近学习过程中,想到提取系统硬件信息做一些验证,故而对网上提到的利用.NET System.Management类获取硬件信息做了进一步的学习.验证.验证是分别在4台电脑,XP SP3系统中进行,特将 ...

  2. 检测硬件的批处理命令,检测硬件bat,一键获取电脑硬件信息

    警告:运行BAT源码是一种危险的动作,如果你不熟悉,请不要尝试! 批处理语言: 简体中文 授权方式: 免费软件 运行环境: Windows平台 检测硬件批处理命令.一键获取.直接双击就可以查看 @ec ...

  3. java获取电脑部分信息

    获取mac地址与cpu序列号 参考博客:https://www.jb51.net/article/94793.htm 另一篇参考地址没记录下来 package util; import java.io ...

  4. java获取当前操作系统的信息

    java获取当前操作系统的信息 JavaOS虚拟机UnixEXT  从网上收集的一些关于java获取操作系统信息的方法,现在总结一下: 1获取本机的IP地址: private static Strin ...

  5. java获取天气预报的信息

    运行效果: 主要功能: 1,jsp页面输入省份和城市 根据条件获取当地的天气信息 2,java代码 利用第三方的省份和城市的路径地址 本工程主要实现java获取天气预报的信息步骤1,创建工程weath ...

  6. android 获取系统硬件信息

    一,首先设置权限访问: <uses-permission android:name="android.permission.READ_PHONE_STATE" />  ...

  7. 通过wmi获取本地硬件信息的一些疑问。

    通过wmi获取本地硬件信息的一些疑问. http://bbs.csdn.net/topics/391017789 http://blog.csdn.net/xcntime/article/detail ...

  8. 获取显卡硬件信息lspci -vnn | grep VGA -A 12

    lspci -vnn | grep VGA -A 12 lshw -C display lshw -c video | grep configuration glxinfo | grep OpenGL ...

  9. C#程序中获取电脑硬件配置信息的一种方法

    本文介绍获取cpu信息和内存信息的方法,根据本文所举例的代码可以举一反三获取更多信息. 获取cpu名称的方法: public string GetCpuInfo() { ManagementObjec ...

随机推荐

  1. Transformation in kentico

    https://docs.kentico.com/k10/developing-websites/loading-and-displaying-data-on-websites/writing-tra ...

  2. zzuoj--10400--海岛争霸(并查集)

    10400: B.海岛争霸 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 128  Solved: 46 [Submit][Status][Web B ...

  3. 滚动监听 after选择器

    一.如何实现滚动到一定位置将内容固定在页面顶部 window.onscroll=function(){ //滚动的距离,距离顶部的距离 var topScroll =document.body.scr ...

  4. swift语言点评十九-类型转化与检查

    1.oc比较: -(BOOL) isKindOfClass: classObj判断是否是这个类或者这个类的子类的实例 -(BOOL) isMemberOfClass: classObj 判断是否是这个 ...

  5. pthread_cleanup_push vs Autorelease VS 异常处理

    黑幕背后的Autorelease http://www.cnblogs.com/feng9exe/p/7239552.html objc_autoreleasePoolPush的返回值正是这个哨兵对象 ...

  6. 洛谷P3567 [POI2014]KUR-Couriers 主席树

    挺裸的,没啥可讲的. 不带修改的主席树裸题 Code: #include<cstdio> #include<algorithm> using namespace std; co ...

  7. css兼容性问题总结

    DIV+CSS设计IE6.IE7.FF 兼容性 DIV+CSS网页布局这是一种趋势,我也开始顺应这股趋势了,不过在使用DIV+CSS网站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使 ...

  8. JavaScript函数练习

    1. 判断一个数是否是素数 function isSushu (n) { n = n || 0; var isSu = true; for (var i = 2; i <= Math.sqrt( ...

  9. JSON.stringify(),JSON.parse(),eval(string)

      JSON.stringify()用于从一个对象解析出字符串 : var obj = {"name":"week","age":" ...

  10. 学习《PythonWeb开发实战(董伟明)》中文PDF+源代码

    python可以用了进行数据分析,也可以进行Web开发,一般会使用django或者flask等进行开发. 国内介绍python web的书有写的不错的,推荐看看<PythonWeb开发实战> ...