当前位置:  技术问答>java相关

在Java中如何读取注册表信息?

    来源: 互联网  发布时间:2015-11-08

    本文导语:  在Java中如何读取注册表信息? | //usage: C:registrytest> c:jdk1.4binjava Main "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main" "start page" http://www.google.com/ //java Main "HKEY_CURRENT_USERSoftwareMicrosoftInternet...

在Java中如何读取注册表信息?

|
//usage: C:registrytest> c:jdk1.4binjava Main "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main" "start page" http://www.google.com/
//java Main "HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMain" "start page" http://www.google.com/
//http://www.esus.com/javaindex/j2se/jdk1.2/javautil/preferences/preferences.html
import java.lang.reflect.*;
import java.util.prefs.*;
import java.util.*;
import java.io.*;

public class Main
{
/* Windows security masks */
private final static int KEY_QUERY_VALUE = 1;

/* Constants used to interpret returns of native functions    */
private final static int NATIVE_HANDLE = 0;
private final static int ERROR_CODE = 1;

/*  Windows error codes. */
private final static int ERROR_SUCCESS = 0;

public static void main(String[] args)
{
System.out.println("java.version:"+System.getProperty("java.version"));
args = new String[2];
args[0]= "HKEY_LOCAL_MACHINE\\SOFTWARE\Rogan";
args[1]="root";
if (args.length != 2) {
System.out.println("Usage: java Main path key");
System.out.print("  eg.: java Main "HKEY_CURRENT_USER\");
System.out.print("\Software\\Microsoft\\Internet Explorer\\Main"");
System.out.println(" "start page"");
System.exit(1);
}

try {
int hkey = getHKEY(args[0]);
System.out.println(Integer.toHexString(hkey));
byte[] WINDOWS_ROOT_PATH = stripHKEY(args[0]);
String key = args[1];
System.out.println(getValue(hkey, WINDOWS_ROOT_PATH, key));

}
catch(Exception e)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
}

public static int getHKEY(String path) throws Exception {
if (path.startsWith("HKEY_CURRENT_USER")) {
return 0x80000001;
}
else if (path.startsWith("HKEY_LOCAL_MACHINE")) {
return 0x80000002;
}
else {
throw new Exception("Path should start with HKEY_CURRENT_USER " +
"or HKEY_LOCAL_MACHINE");
}
}

public static byte[] stripHKEY(String path)
{
int beginIndex = path.indexOf("\\");
String subtmp = path.substring(beginIndex+2);
System.out.println(subtmp);
return stringToByteArray(subtmp);
}

public static String getValue(int hkey, byte[] WINDOWS_ROOT_PATH, String key)
throws Exception
{
Class theClass = Class.forName("java.util.prefs.WindowsPreferences");

int[] result = openKey1(hkey, windowsAbsolutePath(WINDOWS_ROOT_PATH),
KEY_QUERY_VALUE);
if (result[ERROR_CODE] != ERROR_SUCCESS)
{
throw new Exception("Path not found!");
}
int nativeHandle = result[NATIVE_HANDLE];

Method m = theClass.getDeclaredMethod("WindowsRegQueryValueEx",
new Class[]{int.class, byte[].class});
m.setAccessible(true);
byte[] windowsName = toWindowsName(key);
Object value = m.invoke(null, new Object[]{new Integer(nativeHandle), windowsName});
WindowsRegCloseKey(nativeHandle);
if (value == null) {
throw new Exception("Path found.  Key not found.");
}

byte[] origBuffer = (byte[]) value;
byte[] destBuffer = new byte[origBuffer.length - 1];
System.arraycopy(origBuffer, 0, destBuffer, 0, origBuffer.length - 1);

return new String(destBuffer);
}

public static int WindowsRegCloseKey(int nativeHandle)
throws Exception {
Class theClass = Class.forName("java.util.prefs.WindowsPreferences");
Method m = theClass.getDeclaredMethod("WindowsRegCloseKey", new Class[]{int.class});
m.setAccessible(true);
Object ret = m.invoke(null, new Object[]{new Integer(nativeHandle)});
return ((Integer) ret).intValue();
}

public static int openKey(byte[] windowsAbsolutePath, int securityMask)
throws Exception {
Class theClass = Class.forName("java.util.prefs.WindowsPreferences");
Method m = theClass.getDeclaredMethod("openKey", new Class[]{byte[].class, int.class});
m.setAccessible(true);
Object ret = m.invoke(null, new Object[]{windowsAbsolutePath, new Integer(securityMask)});
return ((Integer) ret).intValue();
}

public static int[] openKey1(int hkey, byte[] windowsAbsolutePath, int securityMask)
throws Exception {
Class theClass = Class.forName("java.util.prefs.WindowsPreferences");
Method m = theClass.getDeclaredMethod("WindowsRegOpenKey", new Class[]{int.class,
byte[].class,
int.class});
m.setAccessible(true);
Object ret = m.invoke(null, new Object[]{new Integer(hkey),
windowsAbsolutePath,
new Integer(securityMask)});
return (int[]) ret;
}

private static byte[] stringToByteArray(String str) {
byte[] result = new byte[str.length() + 1];
for (int i = 0; i 

    
 
 

您可能感兴趣的文章:

  • 请问JAVA如何读写注册表
  • 注册表的问题,关于JAVA的。
  • 请问又没有java控制.exe或操作注册表的方法?
  • Java注册表操作类 jared
  • Java难题,Java如何修改Windows注册表?
  • Java中有没有什么类来实现读写注册表文件?
  • 怎样用JAVA函数读写注册表,有这样的函数吗
  • java如何编辑注册表?
  • 请问:java语言能读写注册表吗?多谢多谢,
  • 我下载了Microsoft SDK for Java4.0来对注册表操作,碰到一些问题,请教
  • java程序中怎样读注册表,怎样调用其他的程序?
  • 分享关于JAVA 中使用Preferences读写注册表时要注意的地方
  • java能对注册表进行操作吗?
  • java中读取.txt和读取.ini文件的方式和命令是否一样
  • 请问在Java程序中能否直接读取ini文件,如何读取?
  • 高手帮忙:如何用java读取数据(从ftp服务器上一个文本文件)但不采用get的方式直接读取,打印数据内容(web方式)
  • 请问在Linux里,如何用JAVA读取内存里的PATH设置
  • 可以用Java读取Notes的数据么?急,定给分!!!
  • 有没有人晓得怎么用JAVA实现读取UTMP或WTMP等日志文件!!!!!!!!!!!!!
  • 哪里有用JAVA读取 MS-Excel文件的包?谢谢谢谢
  • java自动根据文件内容的编码来读取避免乱码
  • Java读取二维条码
  • java读取csv文件示例分享(java解析csv文件)
  • 如何用JAVA读取Doc文档?(必给分)
  • 急!送分求助,java程序中如何读取系统环境变量?
  • 如何在java应用程序中读取键盘的输入?闪电给分。
  • 请问各位大虾: 如何用java读取一个xml文档
  • 请问如何用Java从数据库中读取媒体文件,如图片,mpeg 等
  • 如何读取java文件?
  • 谁有读取cad文件的java源程序?谢谢了!
  • 哪为做过读取PDF格式文件的JAVA程序
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.util类formatter的类成员方法: 详细信息 定义及介绍
  • 输出java进程的jstack信息示例分享 通过线程堆栈信息分析java线程
  • 如何让java的编译时的错误信息或输出的结果信息显示在指定的窗口中
  • 哪位有java通信方面的经验,谈谈如何利用java编写服务器程序来接受unix主机发送的数据信息?
  • Window98环境下,编译.java文件,错误信息太多,超过ms-dos窗口一屏,如何看到所有的错误信息.谢谢
  • 怎样用java 程序查看 像硬盘大小 以及各分区的剩余空间之类的信息?
  • 请教各位高手一个简单的问题:在JAVA 中如何才能取得一些系统信息?
  • 如何在java 客户端使用http将cookies 信息发送给服务端.
  • 在linux下怎样查看已经安装的java路径信息???
  • 用Java Applet 进行Web编程时,如何去除Dialog窗口下侧的提示信息"Java Applet Window"!!!急急急!
  • JAVA中如何获得路径信息?
  • 如何获取Java 文件 编译时打印在控制台的错误信息.
  • 听说Java有获取硬件信息的类,那位知道是什么?
  • 运行JAVA的出错信息,麻烦各位帮我看看
  • Java金融信息交换引擎 QuickFIX/J
  • 请问在Linux里,如何用JAVA读取内存里的PATH设置 iis7站长之家
  • 怎样用Java语言获得计算机系统信息??
  • java能做短信息发送软件吗?接口是什么?谁能明确说说这方面知识
  • 运行Java程序时,我想把 dos窗口中的错误信息重定向到一个文本文件,请问有什么办法?
  • 哪儿有关于java认证考试的信息?难么?
  • 如何用java读.properties文件中的配置信息
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3