`
yangzc106
  • 浏览: 157253 次
  • 性别: 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 读取注册表(源码 + jar + dll)

    在Java编程环境中,有时我们需要与操作系统进行交互,例如读取或修改Windows注册表中的信息。在Java标准库中并没有提供直接操作注册表的API,但可以通过一些第三方库来实现这一功能。这里提到的"java 读取注册表...

    JRegistry-1.8java操作注册表最新资料(推荐).rar

    Java操作注册表是Java开发中一项实用但不常见的任务,主要涉及到系统级别的设置和管理。JRegistry库就是专为此目的设计的,版本1.8提供了对Windows注册表的简便访问和操作。在这个压缩包中,你将找到关于如何使用...

    基于Java的实例源码-注册表操作类 jared.zip

    "基于Java的实例源码-注册表操作类 jared.zip" 提供了一个用Java实现的注册表操作类,这对于理解如何在Java应用程序中与Windows注册表交互非常有帮助。下面将详细介绍这个知识点。 首先,Windows注册表是一个存储...

    java下操作注册表方法优质资料.doc

    JNI 允许 Java 代码调用本地(操作系统特定)代码,从而能够直接操作 Windows API 来操作注册表。不过,这将丧失 Java 的跨平台特性,并且需要编写 C/C++ 代码与 Java 代码交互。 总结来说,Java 通过 `java.util....

    registry.jar java读写注册表的开源库

    这个库名为`registry3.1.3.jar`,包含了源代码,使得开发者可以深入理解其内部工作原理,同时也提供了`ICE_JNIRegistry.dll`,这是一个本地接口,用于与Java虚拟机(JVM)进行通信,实现注册表的低级别操作。...

    JavaScript修改注册表实例代码

    ### 知识点 #### JavaScript修改注册表能力 ...该实例代码提供了一种操作注册表的技术途径,展示了如何修改特定的注册表项来控制浏览器行为和安全设置,但同时也提醒了操作者必须小心谨慎,避免产生不可预见的副作用。

    java 缓存系统实战(安装和实例代码)

    以下是关于 Memcached 缓存系统、Java 缓存框架以及实例代码的详细说明: 1. **Memcached 基础** - **Cache 定义**:Cache 通常被用来协调不同速度设备之间的数据传输,包括硬件级别的 CPU Cache 和软件层面的...

    java串口编程小实例

    本实例旨在通过简洁易懂的代码示例,帮助开发者理解如何在Java中实现串口通信。 首先,我们需要引入一个支持Java串口操作的库,如RXTX库。RXTX是一个开源的Java库,它提供了与操作系统底层串口通信的功能。在项目中...

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

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

    java rmi 简单易懂的实例

    本实例旨在提供一个易于理解的Java RMI应用,帮助初学者快速掌握其基本概念和使用方法。完整的例子包括以下几个关键组成部分: 1. **接口定义**:在RMI中,远程对象需要实现一个接口,这个接口定义了可供远程调用的...

    JAVA RMI测试代码

    8. **跨平台兼容性**:"可直接运行在Linux和Windows平台上"表明这个测试代码考虑到了操作系统兼容性,意味着它应该使用了跨平台的Java API,没有依赖特定操作系统的特性。 9. **项目结构**:通常,RMI项目会包含...

    Java RMI 可运行实例

    - **编译代码**:确保所有的Java源代码都已正确编译为字节码文件。 - **运行服务器**:使用`java`命令运行服务器端程序,这将启动服务器并注册远程对象。 - **运行客户端**:在另一台机器或同一台机器的不同终端...

    关于java RMI分布式程序开发实例

    1. 只支持Java:由于RMI是Java特有的,它无法与其他语言的系统进行互操作。 2. 性能限制:RMI依赖于Java对象的序列化,这可能导致性能开销。 3. 安全性:RMI需要谨慎配置以防止恶意攻击,如代码注入。 综上所述,...

    JAVARMI实例[文].pdf

    在Java RMI实例中,我们通常会经历以下几个步骤: 1. **创建远程接口**:首先,我们需要定义一个远程接口,这个接口需要扩展`java.rmi.Remote`。远程接口中的所有方法都需要抛出`RemoteException`,这是因为远程...

    一个简单的RMI例子Java源代码,用于学习理解RMI

    - `Server.java`:服务器端代码,创建并导出远程对象,将其绑定到RMI注册表。 - `Client.java`:客户端代码,查找并调用远程对象的方法。 - `RMIService.java`(可能的名称):一个服务器端辅助类,用于创建和管理...

    dwr实例操作+rmi实例操作

    **DWR(Direct Web Remoting)实例操作** DWR,全称为Direct Web Remoting,是一种在Web应用程序中实现Ajax(Asynchronous JavaScript and XML)技术的框架。它允许JavaScript与服务器端的Java代码进行直接交互,...

    Binder机制在应用程序框架层的Java接口源代码分析

    ### Binder机制在应用程序框架层的Java接口源代码分析 #### 概述 Binder机制作为Android系统中的核心组件之一,主要用于实现不同进程间的通信(IPC)。本文将深入剖析Android应用程序框架层中Binder机制的Java接口...

    飞鸽传书及其JAVA源代码

    了解飞鸽传书的JAVA源代码可以为开发者提供学习网络编程、文件传输和即时通讯机制的实例。通过研究源码,开发者可以学习到如何处理并发连接、优化传输速度、实现安全的文件传输以及如何设计用户友好的界面。此外,...

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

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

Global site tag (gtag.js) - Google Analytics