java注册表是什么?在java程序中使用注册表
大家好,java注册表是什么相信很多的网友都不是很明白,包括在java程序中使用注册表 也是一样,不过没有关系,接下来就来为大家分享关于java注册表是什么和在java程序中使用注册表 的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
Java对Windows注册表进行增删查
代码描述
用java对windows注册表进行编辑是一个比较困难的任务因为java的平台无关性但是java提供了Runtime类它允许把原始的mand命令直接发生送给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();
//位系统的注册表目录
// rkm query( HKEY_LOCAL_MACHINE\\SOFARE\\Wow Node\\Tencent\\QQ Install);
//位系统的注册表目录
rkm query( HKEY_LOCAL_MACHINE\\SOFARE\\Tencent\\QQ Install);
System out println( KEY:+ rkm getKey()+ DATA TYPE:+ rkm getType()+ DATA VALUE:+ rkm getValue());
// rkm add( HKEY_LOCAL_MACHINE\\SOFARE\\Tencent\\QQ TESTING REG_SZ VALUE DATA);
// rkm delete( HKEY_LOCAL_MACHINE\\SOFARE\\Tencent\\QQ TESTING);
} catch(Exception e){
e printStackTrace();
}
}
注:位系统注册表路径是不同的上面的代码实现了在qq的注册表路径下查询出qq的安装路径(对于获取QQ的安装路径前段时间写过一篇类似的文章如果你感兴趣的话可以参看JAVA通过注册表获取软件的安装路径)在安装路径下添加一个注册表信息然后删除添加的信息
package languageexpress 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=;
for(int a=; a< str length; a++){
if( str[a] replace() matches( \\S+)){
switch(b){
case: key= str[a]; break;
case: type= str[a]; break;
case: 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 p= false valid= false;
for(int a=; 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 pleted successfully)){ p= true;}
}
in close();
}
return p;
}
protected boolean delete(String loc String key) throws Exception{
boolean p= 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 pleted successfully)){ p= true;}
}
in close();
return p;
}
lishixinzhi/Article/program/Java/hx/201311/26615在java程序中使用注册表
从JDK1.4起提供了java.util.prefs包,其中有一个Preferences类,能帮助我们实现对系统注册表进行操作,Preferences类在不同的平台中有不同的实现方式。而在Windows平台中,Preferences是将数据保存在注册表中的,而在其它平台中有的是存储在文件中、目录服务或数据库中。但不管怎样,都是通过相同的接口来使用的,程序员可以不管具体的存储实现细节。
在Windows平台中,用户参数项在注册表中的根节点是HKEY_CURRENT_USER\Software\JavaSoft\Prefs;系统参数项在注册表中的根节点是 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs;而我们指定的节点路径是位于这些根节点之下的。java不能直接任意操作windows注册表,其中java.util.prefs中的Preferences类只可以操作部分注册表,Preferences.systemRoot()获得的根目录不是注册表的根目录(eg:HKEY_CLASSES_ROOT),而是java自定义的一个系统目录“/”(比如:可能“/”=HKEY_CURRENT_USER\Software\JavaSoft\Prefs)。
下面的类可以实现在HKEY_CURRENT_USER\Software\JavaSoft\Prefs下添加一个项zzti和项的值,并将所添加的信息保存到zzti.xml文件中.
import java.util.prefs.*;
import java.io.*;
class TestRegedit{
public static void main(String[] args)
{
Preferences myNode=Preferences.userRoot().node("zzti");
System.out.println(myNode.absolutePath());
String[] keys={"com","name","age"};
String[] values={"IBM","gongshi","20"};
for(int i=0;i<keys.length;i++)
{
myNode.put(keys,values);
}
try{
myNode.exportNode(new FileOutputStream(new File("zzti.xml")));
}
catch(Exception e)
{
e.printStackTrace();
}
//以下部分实现的是删除注册表中的一项
/*try{
myNode.removeNode();
}
catch(BackingStoreException e)
{
e.printStackTrace();
}*/
}
}
我是刚刚学到java对注册表的操作,自己也不是很了解,记录下来这个算是笔记.如果你有好的见解,呵呵,不要保留啊.
java(tm)是什么
MyEclipse在运行IE的时候弹出对话框如题
详细内容如下:
Java(tm)插件致命错误
无法装入类 sun/plugin/JavaRunTime。
网桥安装在<C:\PROGRA~1\Java\jre6>处,但类不在该位置
请修改注册表主键以反映新的网桥位置
主键为 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Plug-in
或者更改 CLASSPATH以包含新目录
请参阅文档以获得更多信息
---------------------------
确定
---------------------------
.java文件也已经编译为.class文件,并且和Html文件放在同一个文件夹下的……
有知道的高手速度帮忙回答答对继续赠送100分谢谢!!
本身就有jdk版本信息
java version"1.6.0_04"
Java(TM) SE Runtime Environment(build 1.6.0_04-b12)
Java HotSpot(TM) Client VM(build 10.0-b19, mixed mode, sharing)
HTML信息里面包含一些jar包!
<APPLET code="upervisor" archive="./pervisor.jar,./ag.jar,./TagAPI.jar,./upervisor.jar,./upervisor.jar,./skinlf.jar,./laf-plugin.zip,./orIdw.jar" WIDTH="100%" HEIGHT="100%">
解决方案:
1.删除所有JRE;
2. Windows系统系统盘c盘:
在目录“C:\Documents and Settings”下有三个文件夹(或许你不全有,没有关系):
“All Users.WINDOWS”
“Default User”
还有一个是你自己的用户名
每个目录下都有结构
--
-----\Application Data\
-----\Local Settings\Application Data
在这两个目录下有SUN目录一律删除;
3.最后安装你想要安装的JRE,重新启动电脑即可!
java注册表是什么和在java程序中使用注册表 的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!