java 读取 注册表

package com.lubansoft.service;

import java.io.*;

public class RegQuery {
	private static final String REGQUERY_UTIL = "reg query ";
	private static final String REGSTR_TOKEN = "REG_SZ";
	private static final String REGDWORD_TOKEN = "REG_DWORD";

	private static final String PERSONAL_FOLDER_CMD = REGQUERY_UTIL
			+ "\"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\"
			+ "Explorer\\Shell Folders\" /v Personal";
	private static final String CPU_SPEED_CMD = REGQUERY_UTIL
			+ "\"HKLM\\HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0\""
			+ " /v ~MHz";
	private static final String CPU_NAME_CMD = REGQUERY_UTIL
			+ "\"HKLM\\HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0\""
			+ " /v ProcessorNameString";
	private static final String HTTP_DEFAULT_BROWSERURI = REGQUERY_UTIL
			+ "\"HKEY_CLASSES_ROOT\\http\\shell\\open\\command\"" + "";// http\\shell\\open\\ddeexec\\Topic
	private static final String HTTP_DEFAULT_BROWSERNAME = REGQUERY_UTIL
			+ "\"HkEY_CLASSES_ROOT\\http\\shell\\open\\ddeexec\\Topic\"" + "";

	public static String getCurrentUserPersonalFolderPath() {
		try {
			Process process = Runtime.getRuntime().exec(PERSONAL_FOLDER_CMD);
			StreamReader reader = new StreamReader(process.getInputStream());

			reader.start();
			process.waitFor();
			reader.join();

			String result = reader.getResult();
			int p = result.indexOf(REGSTR_TOKEN);

			if (p == -1)
				return null;

			return result.substring(p + REGSTR_TOKEN.length()).trim();
		} catch (Exception e) {
			return null;
		}
	}

	public static String getCPUSpeed() {
		try {
			Process process = Runtime.getRuntime().exec(CPU_SPEED_CMD);
			StreamReader reader = new StreamReader(process.getInputStream());

			reader.start();
			process.waitFor();
			reader.join();

			String result = reader.getResult();
			int p = result.indexOf(REGDWORD_TOKEN);

			if (p == -1)
				return null;

			// CPU speed in Mhz (minus 1) in HEX notation, convert it to DEC
			String temp = result.substring(p + REGDWORD_TOKEN.length()).trim();
			return Integer.toString((Integer.parseInt(temp.substring("0x"
					.length()), 16) + 1));
		} catch (Exception e) {
			return null;
		}
	}

	public static String getCPUName() {
		try {

			Process process = Runtime.getRuntime()
					.exec(HTTP_DEFAULT_BROWSERURI);
			StreamReader reader = new StreamReader(process.getInputStream());

			reader.start();
			process.waitFor();
			reader.join();

			String result = reader.getResult();
			int p = result.indexOf(REGSTR_TOKEN);

			if (p == -1)
				return null;

			return result.substring(p + REGSTR_TOKEN.length()).trim();
		} catch (Exception e) {
			return null;
		}
	}

	static class StreamReader extends Thread {
		private InputStream is;
		private StringWriter sw;

		StreamReader(InputStream is) {
			this.is = is;
			sw = new StringWriter();
		}

		public void run() {
			try {
				int c;
				while ((c = is.read()) != -1)
					sw.write(c);
			} catch (IOException e) {
				;
			}
		}

		String getResult() {
			return sw.toString();
		}
	}

	public static void main(String s[]) {
		System.out.println("Personal directory : "
				+ getCurrentUserPersonalFolderPath());
		System.out.println("CPU Name : " + getCPUName());
		System.out.println("CPU Speed : " + getCPUSpeed() + " Mhz");
	}
}

 

提取出方法:

public static String getPath(){
		try {
			Process process = Runtime.getRuntime().exec(xxx);
			StreamReader reader = new StreamReader(process.getInputStream());
			reader.start();
			process.waitFor();
			reader.join();
			String result = reader.getResult();
			int p = result.indexOf(REGSTR_TOKEN);
			if (p == -1)
				return null;
			result =  result.substring(p + REGSTR_TOKEN.length()).trim();
			p = result.indexOf("\n");
			if(p != -1){
				result = result.substring(0, p);
			}
			return result.replace("\r", "");
		} catch (Exception e) {
			return null;
		}
	}

 

static class StreamReader extends Thread {
		private InputStream is;
		private StringWriter sw;
		StreamReader(InputStream is) {
			this.is = is;
			sw = new StringWriter();
		}
		public void run() {
			try {
				int c;
				while ((c = is.read()) != -1)
					sw.write(c);
			} catch (IOException e) {}
		}
		String getResult() {
			return sw.toString();
		}
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值