`
天边一朵雲
  • 浏览: 36331 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JAVA对WINDOWS注册表进行增删查

    博客分类:
  • JAVA
阅读更多

代码描述
java对windows注册表进行编辑是一个比较困难的任务,因为java的平台无关性。但是java提供了Runtime类,它允许把原始的command命令直接发生送给OS,所以可以通过这个类来实现对注册表简单有效的管理。
这里允许的基本功能是添加、删除和查询注册表信息。根据key查询出value和type分别存放在不同的变量中。

//主要的方法
add(String location, String key, String type, String value);
delete(String location, String key);
query(String location, String key);

//查询消息用到的方法
getKey() => 检索的key名.
getValue() => 根据key得到的value
getType() => 根据key得到的数据类型 (REG_SZ, REG_BINARY, 等)

调用方法
例:

 

public static void main(String[] args) {
        try {
            RegKeyManager rkm = new RegKeyManager();
//            64位系统的注册表目录
//            rkm.query("HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Tencent\\QQ2009", "Install");
//            32位系统的注册表目录
            rkm.query("HKEY_LOCAL_MACHINE\\SOFTWARE\\Tencent\\QQ2009", "Install");
            System.out.println("KEY: " + rkm.getKey() + " DATA TYPE: " + rkm.getType() + " DATA VALUE: " + rkm.getValue());
//            rkm.add("HKEY_LOCAL_MACHINE\\SOFTWARE\\Tencent\\QQ2009","TESTING","REG_SZ","VALUE DATA");
//            rkm.delete("HKEY_LOCAL_MACHINE\\SOFTWARE\\Tencent\\QQ2009","TESTING");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }



:64位系统注册表路径是不同的上面的代码实现了在qq的注册表路径下查询出qq的安装路径(对于获取QQ的安装路径前段时间写过一篇类似的文章,如果你感兴趣的话可以参看JAVA通过注册表获取软件的安装路径),在安装路径下添加一个注册表信息,然后删除添加的信息。

 

 

package info.itlanguageexpress.java;
import java.io.*;
public class RegKeyManager {
    private final String TYPES[] = { "SZ", "BINARY", "DWORD", "QWORD", "DWORD_LITTLE_ENDIAN", "QWORD_LITTLE_ENDIAN", "DWORD_BIG_ENDIAN", "EXPAND_SZ", "LINK", "MULTI_SZ", "NONE", "RESOURCE_LIST" };
    private String type = "", value = "", key = "";
    protected void query(String loc, String k) throws Exception {
        Process p = Runtime.getRuntime().exec("reg QUERY \"" + loc + "\" /v \"" + k + "\"");
        BufferedReader in = new BufferedReader( new InputStreamReader( p.getInputStream() ) );
        String out = "";
        while ( ( out = in.readLine() ) != null ) {
            if (out.matches("(.*)\\s+REG_(.*)")) { break; }
        }
        in.close();
        String str[] = out.split("    ");
        int b = 0;
        for (int a=0; a < str.length; a++) {
            if ( str[a].replace(" ", "").matches("\\S+") ) {
                switch (b) {
                    case 0: key = str[a]; break;
                    case 1: type = str[a]; break;
                    case 2: value = str[a]; break;
                }
                b++;
            }
        }
    }
    protected String getKey() { return key; }
    protected String getType() { return type; }
    protected String getValue() { return value; }
    protected boolean add(String loc, String name, String dType, String value) throws Exception {
        boolean comp = false, valid = false;
        for (int a = 0; a < TYPES.length; a++) {
            if (dType.equalsIgnoreCase("REG_" + TYPES[a])) { valid = true; break; }
        }
        if ( valid ) {
            Process p = Runtime.getRuntime().exec("reg ADD \"" + loc + "\" /v \"" + name + "\" /t \"" + dType + "\" /d \"" + value + "\"");
            BufferedReader in = new BufferedReader( new InputStreamReader( p.getInputStream() ) );
            String out = "";
            while ( (out = in.readLine() ) != null ) {
                if (out.equalsIgnoreCase("The operation completed successfully.")) { comp = true; }
            }
            in.close();
        }
        return comp;
    }
    protected boolean delete(String loc, String key) throws Exception {
        boolean comp = false;
        Process p = Runtime.getRuntime().exec("reg DELETE \"" + loc + "\" /v \"" + key + "\" /f");
        BufferedReader in = new BufferedReader( new InputStreamReader( p.getInputStream() ) );
        String out = "";
        while ( ( out = in.readLine() ) != null ) {
            if (out.equalsIgnoreCase("The operation completed successfully.")) { comp = true; }
        }
        in.close();
        return comp;
    }
}


文章来自本人的个人博客:http://www.itlanguageexpress.info

 

分享到:
评论

相关推荐

    Java对Windows注册表进行增删查

     用java对windows注册表进行编辑是一个比较困难的任务,因为java的平台无关性。但是java提供了Runtime类,它允许把原始的command命令直接发生送给OS,所以可以通过这个类来实现对注册表简单有效的管理。  这里...

    JAVA访问WINDOWS注册表

    在编程领域,有时我们需要在Java程序中访问操作系统的特定功能,比如...然而,由于注册表操作可能会对系统稳定性造成影响,所以在进行这类操作时必须谨慎,确保遵循最佳实践,避免对用户数据和系统造成不必要的损害。

    JAVA操作windows注册表

    在Java编程环境中,有时我们需要对Windows系统的注册表进行读写操作,例如配置软件设置、修复系统问题或收集系统信息。Windows注册表是一个存储操作系统和应用程序配置数据的重要数据库。本篇文章将详细探讨如何使用...

    Java操作windows注册表

    ### Java操作Windows注册表:深入理解与实践 在IT领域,特别是软件开发中,了解如何使用Java...通过本文的介绍,相信读者已经对Java操作Windows注册表有了更深入的理解,能够根据实际需求灵活选择最合适的实现方案。

    使用java修改windows注册表实用.pdf

    - GDAPI(General Desktop Application Programming Interface)是一个Java库,提供了对Windows注册表的高级操作接口。 - 它基于JNI(Java Native Interface),允许Java应用程序直接调用Windows注册表API。 2. *...

    Java直接访问Windows注册表

    Jave的Preferences只在Software\JavaSoft\Prefs操作,反射WindowsPreferences能够操作Windows注册表的其他节点. 方法: 1.public static void put(int root,String path,String key,String val) 2.public static ...

    注册表操作增删读写

    对注册表的操作主要包括增、删、读、写这四种基本操作,这些操作对于开发者来说非常重要,因为它们能帮助我们管理系统的配置和应用程序的状态。 **增加(Add)** 增加注册表项意味着在注册表中创建新的键或值。在...

    使用Java操作Windows注册表

    在Java编程环境中,有时我们需要对Windows系统的注册表进行读写操作,这在处理特定的系统配置或应用程序设置时尤其有用。Java从JDK 1.4版本开始引入了一个名为`Preferences`的类,该类提供了方便的方式来管理和操作...

    Java Windows 操作注册表

    Java在Windows平台上操作注册表是一项常见的任务,尤其是在开发系统集成或者需要进行系统配置的软件时。注册表是Windows操作系统中的一个重要数据库,存储了系统和应用程序的各种设置信息。本篇文章将详细探讨如何...

    Windows系统注册表增强软件

    Regseeker是一个近乎完美的Windows系统注册表增强软件。 这个体积不大的绿色软件具备强大的注册表清理功能,并可以对启动项、历史痕迹、软件安装信息、MRU等等注册表信息进行查看和清理。其强大的注册表查找功能,你...

    C#注册表操作(增/删/改/查)

    ### C#注册表操作(增/删/改/查) #### 概述 在Windows操作系统中,注册表(Registry)是存储系统配置信息的核心数据库。它对于系统的稳定运行至关重要,因此,任何对注册表的操作都需要谨慎处理。本文将详细介绍...

    java读取注册表信息

    Java语言在处理操作系统级别的任务时,虽然不如C++或Python那样直接,但通过特定的库和API,也可以实现对Windows注册表的读取。在这个场景中,我们需要关注的核心知识点是Java如何与Windows系统进行交互,特别是如何...

    java如何操作注册表源代码

    通过 Java 来操作注册表,我们可以实现跨平台的程序在 Windows 上对系统配置进行读取和修改。 在 Java 中操作注册表,通常需要借助第三方库,例如 JRegistryKey,这是一个开源的 Java 注册表库,它允许 Java 应用...

    windows注册表操作实例

    在Windows操作系统中,注册表(Registry)是一个至关重要的数据库,存储...通过本文的介绍,你已经对Windows注册表的增删改查有了基本的认识,现在可以进一步深入研究并实践`windowsRegedist`中的内容,提升你的技能。

    Java操作注册表插件

    "Java操作注册表插件"就是这样的工具,它允许Java程序与Windows注册表进行交互。 在Java中,直接操作注册表并不像在C++或C#等语言中那样简单直接,因为Java的标准库并不包含对注册表的原生支持。为了实现这个功能,...

    JAVA操作注册表的神器

    在IT行业中,有时候我们需要对操作系统的一些底层设置进行编程级别的操作,比如Windows的注册表。注册表是Windows系统存储配置信息的重要数据库,包含了系统的各种设置、应用程序的信息等。Java作为一种跨平台的语言...

    使用java修改windows注册表.pdf

    在开发涉及系统级配置的应用时,常常需要对Windows注册表进行操作。Java作为一种跨平台的语言,提供了多种方式来实现这一需求。本文将详细介绍三种主要的方法:使用`java.util.prefs.Preferences`API、通过命令行...

    使用java修改windows注册表.doc

    在开发涉及系统级配置的应用时,常常需要对Windows注册表进行操作。Java作为一种跨平台的语言,提供了多种方式来实现这一需求。本文将详细介绍使用Java操作Windows注册表的三种常见方法,并分析各自的优缺点。 ####...

    Windows注册表修改实例完全手册

    注册表是Windows系统的核心数据库,存储了系统及应用程序的配置信息,对其进行明智的修改可以提升性能、解决故障或实现个性化设置。 本书涵盖了广泛的注册表修改实例,包括但不限于以下几个方面: 1. **系统性能...

Global site tag (gtag.js) - Google Analytics