java 使用命令行查找注册表

发布时间:2016-12-8 17:49:04 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"java 使用命令行查找注册表",主要涉及到java 使用命令行查找注册表方面的内容,对于java 使用命令行查找注册表感兴趣的同学可以参考一下。

转载地址:http:[email protected]/blog/static/7997376920134231142382/ java 使用命令行查找注册表   2013-05-23 23:44:48|  分类: 程序设计 |  标签:reg  query  注册表  java   |举报 |字号 订阅 命令行操作注册表:reg query 查看命令帮助命令:reg query /? REG QUERY KeyName [/v [ValueName] | /ve] [/s]           [/f Data [/k] [/d] [/c] [/e]] [/t Type] [/z] [/se Separator]   KeyName  [\\Machine\]FullKey            Machine - 远程机器名称,省略当前机器的默认值。在远程机器上                      只有 HKLM 和 HKU 可用。            FullKey - 以 ROOTKEY\SubKey 名称形式                 ROOTKEY - [ HKLM | HKCU | HKCR | HKU | HKCC ]                 SubKey  - 在选择的 ROOTKEY 下的注册表项的全名   /v       具体的注册表项值的查询。            如果省略,会查询该项的所有值。            只有与 /f 开关一起指定的情况下,此开关的参数才是可选的。它指定            只在值名称中搜索。   /ve      查询默认值或空值名称(默认)。   /s       循环查询所有子项和值(如 dir /s)。   /se      为 REG_MULTI_SZ 在数据字符串中指定分隔符(长度只为 1 个字符)。            默认分隔符为 "\0"。   /f       指定搜索的数据或模式。            如果字符串包含空格,请使用双引号。默认为 "*"。   /k       指定只在项名称中搜索。   /d       指定只在数据中搜索。   /c       指定搜索时区分大小写。            默认搜索为不区分大小写。   /e       指定只返回完全匹配。            默认是返回所有匹配。   /t       指定注册表值数据类型。            有效的值是:              REG_SZ, REG_MULTI_SZ, REG_EXPAND_SZ,              REG_DWORD, REG_QWORD, REG_BINARY, REG_NONE            默认为所有类型。   /z       详细: 显示值名称类型的数字等值。 示例:   REG QUERY "HKLM\Software\Microsoft\ResKit" /v Version     显示注册表值版本的值   REG QUERY “\\ABC\HKLM\Software\Microsoft\ResKit\Nt\Setup” /s     显示远程机器 ABC 上的、在注册表项设置下的所有子项和值   REG QUERY “HKLM\Software\Microsoft\ResKit\Nt\Setup” /se #     用 "#" 作为分隔符,显示类型为 REG_MULTI_SZ 的所有值名称的所有     子项和值。   REG QUERY “HKLM /f SYSTEM /t REG_SZ” /c /e     以区分大小写的形式显示项、值和数据和数据类型 REG_SZ     的、在 HKLM 更目录下的、"SYSTEM" 出现的精确次数   REG QUERY “HKCU” /f 0F /d /t REG_BINARY     显示在 HKCU 根目录下、数据类型为 REG_BINARY 的数据的项、值和     数据的 "0F" 出现的次数。   REG QUERY “HKLM\SOFTWARE” /ve     显示在 HKLM\SOFTWARE 下的项、值和数据(默认)     /////////////////////////////////java操作注册表源码///////////////////////////////////////////////////////////////////// package com.yan.exportdata; import java.io.BufferedReader; import java.io.InputStreamReader; 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 + "\"");         System.out.println("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].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;     }  /**   * @param args   * @throws Exception   */  public static void main(String[] args) throws Exception {   // TODO Auto-generated method stub   RegKeyManager rkm = new RegKeyManager();   rkm.query("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", "Personal");   System.out.println("KEY: " + rkm.getKey() + " DATA TYPE: " + rkm.getType() + " DATA VALUE: " + rkm.getValue());   rkm.add("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run","TESTING","REG_SZ","VALUE DATA");   rkm.delete("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run","TESTING");      }   }

上一篇:html+css学习----表格table
下一篇:php几个函数

相关文章

相关评论