近期项目需要使用java读取注册表,所以就认真的研究了一下,现把研究成果与大家分享一下.
====================================================================================
【注】
注册表非常非常重要,如果操作不当,极有可能使系统崩溃。所以在操作之前,请备份完整的注册表数据。以备不时之需。
====================================================================================
虽然java读取注册表之后限制了java跨平台的特性,但是在实际的应用中还是会用到的。java读取windows的注册表,我根据网上前人的提示,总结了三种方法
1.使用java API【java.util.prefs.Preferences】
优点:java API中的类,使用简单方便
缺点:操作范围有限。
64位系统下只能在
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Prefs]
[HKEY_CURRENT_USER\Software\JavaSoft\Prefs]中操作。
2.某一高人写的使用的invoke方法【如高人看到该文章,请联系我】
由于这几天为了排错,参考了大量的资料,所以实在忘记了该大侠是谁,如您看到文章,请把您下载源码的链接发送发私信给我,核实之后一定标注并感谢。
优点:相对与API来说,操作的范围相对较大。可在[HKEY_CURRENT_USER]和[HKEY_LOCAL_MACHINE]中读写。相对于第三种方法来说,简单方便。
缺点:不知是我不会用还是怎么了,有时会有一些节点的数据读不出来,特别是自定义的节点,像安装软件生成的节点。
3.使用com.ice.jni.registry.
这个类对于研究过java读取注册表的程序猿来说就非常熟悉了。它是采用了JNI技术,读取的注册表。
优点:这个包的优点就是灵活了,可以随意的读取注册表中的数据,在我使用的过程中,未出现读不出的情况。
缺点:因为太灵活了,注册表又是非常非常的终于,所以要是一不小心写错了操作的路径,那我只能希望你曾备份过注册表。