`

java利用jni操作注册表

阅读更多

java自带有一个prefs包,可以简单地在固定的节点中写入些信息,但感觉太受局限,而且在注册表中一眼就能找出来,因此找到了各利用jni插件来操作注册表的方法,应用灵活,与大家分享我的代码:

/**//*
 * WriteRegedit.java
 *
 * Created on 2008年3月5日, 下午6:16
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package RegeditInfo;

import com.ice.jni.registry.*;
import java.text.SimpleDateFormat;
import java.util.TimerTask;

/** *//**
 *
 * @author heavens
 */
public class RegeditBase ...{
    
    static SimpleDateFormat shortDateFormat  = new SimpleDateFormat("yyyy-MM-dd");
    /** *//** Creates a new instance of test */
   
   //把信息存储到注册表HKEY_LOCAL_MACHINE下的某个节点的某一变量中,有则修改,无则创建
    public static boolean setValue(String folder,String subKeyNode,String subKeyName,String subKeyValue)
    ...{
        try 
        ...{     
            RegistryKey software = Registry.HKEY_LOCAL_MACHINE.openSubKey(folder);
            RegistryKey subKey = software.createSubKey(subKeyNode, "");      
            subKey.setValue(new RegStringValue(subKey,subKeyName,subKeyValue));
            subKey.closeKey();  
            return true;
        } 
        catch(NoSuchKeyException e) 
        ...{      
            e.printStackTrace();    
        } 
        catch(NoSuchValueException e)
        ...{
            e.printStackTrace();   
        }
        catch(RegistryException e) 
        ...{      
            e.printStackTrace();    
        }  
       return false;
    }
    
    //删除注册表中某节点下的某个变量
    public static boolean deleteValue(String folder,String subKeyNode,String subKeyName)
    ...{
        try 
        ...{      
            RegistryKey software = Registry.HKEY_LOCAL_MACHINE.openSubKey(folder);
            RegistryKey subKey = software.createSubKey(subKeyNode, "");    
            subKey.deleteValue(subKeyName);
            subKey.closeKey();   
            return true;
        } 
        catch (NoSuchKeyException e) 
        ...{      
            e.printStackTrace();   
        }
        catch(NoSuchValueException e)
        ...{
            e.printStackTrace();   
        }
        catch (RegistryException e)
        ...{     
            e.printStackTrace();    
        }
        return false;
    }
    
    //删除注册表中某节点下的某节点
    public static boolean deleteSubKey(String folder,String subKeyNode)
    ...{
        try 
        ...{      
            RegistryKey software = Registry.HKEY_LOCAL_MACHINE.openSubKey(folder);
            software.deleteSubKey(subKeyNode);
            software.closeKey();   
            return true;
        } 
        catch (NoSuchKeyException e) 
        ...{      
            e.printStackTrace();   
        } 
        catch (RegistryException e)
        ...{     
            e.printStackTrace();    
        }
        return false;
    }
    
    //打开注册表项并读出相应的变量名的值  
    public static String getValue(String folder,String subKeyNode,String subKeyName)
    ...{
        String value = "";
        try 
        ...{      
            RegistryKey software = Registry.HKEY_LOCAL_MACHINE.openSubKey(folder);
            RegistryKey subKey = software.openSubKey(subKeyNode); 
            value = subKey.getStringValue(subKeyName); 
            subKey.closeKey();  
        } 
        catch (NoSuchKeyException e) 
        ...{      
            value = "NoSuchKey";
            //e.printStackTrace();   
        } 
        catch(NoSuchValueException e)
        ...{
            value = "NoSuchValue";
            //e.printStackTrace();   
        }
        catch (RegistryException e)
        ...{     
            e.printStackTrace();    
        }
        return value;
    }
  /**//*
    //测试
    public static void main(String[] args)
    {
        String today = shortDateFormat.format(new java.util.Date());
        setValue("SOFTWARE","Plan\RegistInfo","RegistDate",today);
        String value = getValue("SOFTWARE","Plan\RegistInfo","LastLoginDate");

        System.out.println(getValue("SOFTWARE","Plan\RegistInfo","LastLoginDate"));
        //deleteValue("SOFTWARE","Plan\RegistInfo","LastLoginDate");

       
          java.util.Timer timer = new java.util.Timer();   
          timer.scheduleAtFixedRate(new TimerTask(){
             public void run()
             {
                 System.out.println(getValue("SOFTWARE","EPlan\RegistInfo","LastLoginDate"));
             }
          },5000,2000);
        
    }
  */
}

 

此方法需要调用Registry.jar包以及ICE_JNIRegistry.dll。dll去放在system32里即可,或者其它自定义的classpath

http://www.gjt.org/download/time/java/jnireg/registry-3.1.3.zip 

 

分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目

    Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个...

    JAVA上百实例源码以及开源项目源代码

    Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个...

    java开源包4

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包101

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包11

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包6

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包9

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包8

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包10

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包5

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包1

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包3

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包2

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    java开源包7

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    Java资源包01

    Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计...

    h_JAVA 2应用编程150例.rar

    实例8 利用JNI实现窗口特效 20 实例9 文件选择对话框 24 实例10 改变字体 26 实例11 应用JTree 28 实例12 应用JTable 30 实例13 记事本 32 实例14 使用JTextPane 36 实例15 实现多文档视图 37 实例16 使用进度条 39 ...

    java应用软件程序设计

    18 实例8 利用JNI实现窗口特效 20 实例9 文件选择对话框 24 实例10 改变字体 26 实例11 应用JTree 28 实例12 应用JTable 30 实例13 记事本 32 实例14 使用JTextPane 36 实例15 实现多文档...

Global site tag (gtag.js) - Google Analytics