获取PC硬件信息方法一:利用Java Applet



Java Applet可以运行在网页上面,实现功能是通过调用Java来获取本地硬盘信息,前提是本机必须安装Java环境才能运行,不然会提示你安装。

下面是代码:

package com.test;

import java.applet.Applet;
import java.awt.Graphics;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.NetworkInterface;

public class HardWareUtils extends Applet{

	public HardWareUtils(){
	}
	private static final long serialVersionUID = 1L;

	@Override
	public void paint(Graphics paint) {
		super.paint(paint);
		paint.drawString("获取硬件信息", 10, 10);
		paint.drawString("CPU  SN:" + HardWareUtils.getCPUSerial(), 10, 30);
		paint.drawString("主板  SN:" + HardWareUtils.getMotherboardSN(), 10, 50);
		paint.drawString("C盘   SN:" + HardWareUtils.getHardDiskSN("c"), 10, 70);
		paint.drawString("MAC  SN:" + HardWareUtils.getMac(), 10, 90);
	}

	/**
	 * 获取主板序列号
	 * 
	 * @return
	 */
	public static String getMotherboardSN() {
		String result = "";
		try {
			File file = File.createTempFile("realhowto", ".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_BaseBoard\") \n"
					+ "For Each objItem in colItems \n"
					+ "    Wscript.Echo objItem.SerialNumber \n"
					+ "    exit for  ' do the first cpu only! \n" + "Next \n";

			fw.write(vbs);
			fw.close();
			Process p = Runtime.getRuntime().exec(
					"cscript //NoLogo " + file.getPath());
			BufferedReader input = new BufferedReader(new InputStreamReader(p
					.getInputStream()));
			String line;
			while ((line = input.readLine()) != null) {
				result += line;
			}
			input.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result.trim();
	}

	/**
	 * 获取硬盘序列号
	 * 
	 * @param drive
	 *            盘符
	 * @return
	 */
	public static String getHardDiskSN(String drive) {
		String result = "";
		try {
			File file = File.createTempFile("realhowto", ".vbs");
			file.deleteOnExit();
			FileWriter fw = new java.io.FileWriter(file);

			String vbs = "Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n"
					+ "Set colDrives = objFSO.Drives\n"
					+ "Set objDrive = colDrives.item(\""
					+ drive
					+ "\")\n"
					+ "Wscript.Echo objDrive.SerialNumber"; // see note
			fw.write(vbs);
			fw.close();
			Process p = Runtime.getRuntime().exec(
					"cscript //NoLogo " + file.getPath());
			BufferedReader input = new BufferedReader(new InputStreamReader(p
					.getInputStream()));
			String line;
			while ((line = input.readLine()) != null) {
				result += line;
			}
			input.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result.trim();
	}

	/**
	 * 获取CPU序列号
	 * 
	 * @return
	 */
	public static String getCPUSerial() {
		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";
			fw.write(vbs);
			fw.close();
			Process p = Runtime.getRuntime().exec(
					"cscript //NoLogo " + file.getPath());
			BufferedReader input = new BufferedReader(new InputStreamReader(p
					.getInputStream()));
			String line;
			while ((line = input.readLine()) != null) {
				result += line;
			}
			input.close();
			file.delete();
		} catch (Exception e) {
			e.fillInStackTrace();
		}
		if (result.trim().length() < 1 || result == null) {
			result = "无CPU_ID被读取";
		}
		return result.trim();
	}

	/**
	 * 获取MAC地址
	 */
	public static String getMac() {
		try {
			byte[] mac = NetworkInterface.getByInetAddress(InetAddress.getLocalHost()).getHardwareAddress();
			StringBuffer sb = new StringBuffer();
			for (int i = 0; i < mac.length; i++) {
				if (i != 0) {
					sb.append("-");
				}
				String s = Integer.toHexString(mac[i] & 0xFF);
				sb.append(s.length() == 1 ? 0 + s : s);
			}
			return sb.toString().toUpperCase();
		} catch (Exception e) {
			return "";
		}

	}
}

运行效果如下:

注意:如果直接在Eclipse里面运行正常,如果嵌入到网页中想要正常获取必须进行签名。


对Java Applet进行签名的方法如下:

怎样对java小程序签名受到很多人的关注,网上也有这些方面可供参考的文档,但都不是完整,在这里我给出一份可具体操作的文档,希望能给大家一些帮助。 场景:test.jar:内含待签名的java小程序 结果:签名后,客户端能自动下载java小程序,且java小程序能访问客户端的任何资源

步骤:

(1)将java小程序打包 
  jar cvf test.jar test.class

(2)生成名为chinani.store的密钥库,别名为chinani 
  keytool -genkey -keystore chinani.store -alias chinani
密码:123456 (根据需要自己输入) 以下根据需要输入,最后确认:y

(3)导出chinani.cer数字证书 
  keytool -export -keystore chinani.store -alias chinani -file chinani.cer
密码:123456 (根据需要自己输入)

(4)对test.jar文件进行签名 
  jarsigner -keystore chinani.store  test.jar chinani
密码:123456 (根据需要自己输入)

  最后写一个html文件,运行此文件即可自动下载安装运行java小程序HTML文件内容如下:

<applet code=Test 
archive="Test.jar" 
width=320 height=300> 
</applet>


  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 好的,我可以帮助你写一个 Java Applet。 首先,需要了解 Java Applet 是什么,它是一种用 Java 语言编写的小型图形化程序,可以在网页中嵌入并运行。 下面是一个简单的 Java Applet 示例代码: ``` import java.applet.Applet; import java.awt.Graphics; public class MyApplet extends Applet { public void paint(Graphics g) { g.drawString("Hello, World!", 20, 20); } } ``` 这是一个绘制文本的简单示例,在网页中显示“Hello, World!”字符串。 要在网页中嵌入这个 Applet,需要创建一个 HTML 文件,如下所示: ``` <applet code="MyApplet.class" width="200" height="200"> </applet> ``` 希望这个示例对您有所帮助。 ### 回答2: Java Applet是一种运行在Web浏览器中的小型Java程序。它可以用来在网页上展示交互式的图形、动画和其他富媒体内容。以下是一个简单的Java Applet的示例: ```java import java.applet.Applet; import java.awt.Color; import java.awt.Graphics; public class HelloWorldApplet extends Applet { public void paint(Graphics g) { g.setColor(Color.BLUE); g.drawString("Hello, World!", 50, 50); } } ``` 在这个例子中,我们创建了一个名为HelloWorldAppletJava类,并继承了Applet类。在paint方法中,我们使用Graphics对象绘制了一个蓝色的字符串"Hello, World!",坐标为(50, 50)。当这个Applet运行在Web浏览器中时,会在网页上显示出这句话。 要在网页上嵌入这个Java Applet,可以使用HTML的<applet>标签。以下是使用HTML嵌入Java Applet的示例: ```html <html> <head> <title>Java Applet示例</title> </head> <body> <applet code="HelloWorldApplet.class" width="300" height="200"></applet> </body> </html> ``` 在上述HTML代码中,我们将Java Applet的类文件指定为code属性,并设置了Applet的宽度和高度。当用户打开这个HTML文件时,浏览器会加载Java Applet,并在网页上显示出来。 总结起来,编写一个Java Applet需要继承Applet类,并在paint方法中编写绘图逻辑。然后,将Java Applet嵌入到HTML中,就可以在Web浏览器中看到它的效果了。 ### 回答3: 一个 Java Applet 是一个能够在网页上运行的小程序。它使用 Java 编程语言编写,并通过 Java Applet 插件嵌入到网页中。下面是一个简单的例子,演示了如何编写一个 Java Applet: import java.applet.Applet; import java.awt.Graphics; public class MyFirstApplet extends Applet { public void paint(Graphics g) { g.drawString("这是我的第一个 Java Applet!", 50, 50); } } 在这个例子中,我们创建了一个类名为 MyFirstAppletJava Applet。该类继承自 Applet 类,并重写了 paint 方法。paint 方法用于绘制 Applet 的内容,通过传入的 Graphics 对象进行绘制操作。 在 paint 方法中,我们调用了 Graphics 对象的 drawString 方法,来绘制一个字符串。该方法接受三个参数:字符串内容、字符串左上角的 x 坐标、字符串左上角的 y 坐标。 为了在网页中展示这个 Applet,我们可以在一个 HTML 文件中添加如下代码: <html> <head> <title>我的第一个 Java Applet</title> </head> <body> <applet code="MyFirstApplet.class" width="200" height="200"> 如果浏览器不支持 Java 插件,则显示这段文本。 </applet> </body> </html> 在这个 HTML 文件中,我们使用了 <applet> 标签来指定运行的 Applet。其中的 code 属性指定了 Applet 类的名称,width 和 height 属性指定了 Applet 的宽度和高度。 在运行这个 Applet 时,浏览器会加载 Java Applet 插件,并显示 Applet 的内容。在这个例子中,Applet 将会在网页上绘制一段文字。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值