`
yangzc106
  • 浏览: 154332 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java操作注册表实例代码

阅读更多

 

以下代码的作用是读取USB设备:

 

package org.yangzc.reglistener;

import com.ice.jni.registry.Registry;
import com.ice.jni.registry.RegistryKey;
import com.ice.jni.registry.RegistryValue;

/**
 * 操作注册表实例
 * @author yangzc
 *
 */
public class Domain1 {

	private static final String REG_PATH = "SYSTEM\\CurrentControlSet\\Control\\DeviceClasses\\{53f56307-b6bf-11d0-94f2-00a0c91efb8b}";
	private static final String REG_USBSTOR_Path = "SYSTEM\\CurrentControlSet\\Enum\\USB";
	
	public static void main(String[] args) {
		try {
			RegistryKey child = Registry.HKEY_LOCAL_MACHINE.openSubKey(REG_PATH);
			String curDeviceId = "";
			for(int i=0; i< child.getNumberSubkeys(); i++){
				try{
					String key = child.regEnumKey(i);
					RegistryKey devicekey = child.openSubKey(key, RegistryKey.ACCESS_READ);
					RegistryKey ctrlkey =child.openSubKey(key, RegistryKey.ACCESS_READ).openSubKey("#\\Control", RegistryKey.ACCESS_READ);
					RegistryValue value = ctrlkey.getValue("Linked");
					if(value.getType() == RegistryValue.REG_DWORD){
						String deviceInstance = devicekey.getStringValue("DeviceInstance");
						String deviceInfo[] = deviceInstance.split("\\\\");
						if(value.getByteData()[value.getByteLength()-1] == 1 && "".equals(curDeviceId)){
							System.out.println("USB设备:" + deviceInfo[1] + "已经连接");
							System.out.println("序列号:" + deviceInfo[2]);
							
							RegistryKey usb = getUsbValue(deviceInfo[2].split("&")[0]);
							if(usb != null){
								System.out.println("设备描述:" + usb.getStringValue("DeviceDesc"));
								System.out.println("硬件ID:" + usb.getStringValue("HardwareID"));
							}
						}
					}
				}catch(Exception e){
					
				}
			}
			Thread.sleep(1000);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 返回USB设备
	 * @param serialNo
	 * @return
	 */
	private static RegistryKey getUsbValue(String serialNo){
		try {
			String subkey1 = null;
			RegistryKey child = Registry.HKEY_LOCAL_MACHINE.openSubKey(REG_USBSTOR_Path);
			for(int i=0; i< child.getNumberSubkeys(); i++){
				String key = child.regEnumKey(i);
				System.out.println(key);
				RegistryKey devicekey = child.openSubKey(key, RegistryKey.ACCESS_READ);
				int subKeys = devicekey.getNumberSubkeys();
				for(int j=0; j< subKeys; j++){
					String subkey = child.regEnumKey(j);
					if(subkey.startsWith(serialNo)){
						subkey1 = subkey;
					}
				}
				return devicekey.openSubKey(subkey1, RegistryKey.ACCESS_READ);
			}
		} catch (Exception e) {
		}
		return null;
	}
}

 

 

工程目录结构如下:

 

分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目源代码

    Java圆形按钮实例代码,含注释 两个目标文件,自绘button。 Java圆形电子时钟源代码 1个目标文件 内容索引:JAVA源码,系统相关,电子钟  用JAVA编写的指针式圆形电子钟,效果图如下所示,其实代码很简单,希望对你有...

    JAVA上百实例源码以及开源项目

    Java圆形按钮实例代码,含注释 两个目标文件,自绘button。 Java圆形电子时钟源代码 1个目标文件 内容索引:JAVA源码,系统相关,电子钟  用JAVA编写的指针式圆形电子钟,效果图如下所示,其实代码很简单,希望对你有...

    2个G的java实例源码以及开源项目源码

    2个G的java实例源码以及开源项目源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的... zip Java 数据库连接池 BoneCPjar Java 注册表操作类 jared . tgz Java 转 C ++代码工具J2C. jar OAuth 实现...

    100个对学习有帮助的Java小程序源代码

    内容索引:Java源码,初学实例,Java实例 100个Java小实例源代码,学习Java的朋友可不要错过哦,肯定对你学习会有帮助的,内容涉及到数据库、图形、算法、字符串操作等,不一一说了。  简单的EJB、有状态SessionBean...

    java开源包10

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包8

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包4

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包6

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包9

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包11

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包5

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包101

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包1

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包3

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    Java实现对Mysql数据库的备份还原

    java实现对mysql数据库的备份与还原,可跨平台,windows与Linux通用,代码内含有利用注册表信息获取mysqldump命令实例

    java开源包2

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包7

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

Global site tag (gtag.js) - Google Analytics