java读取注册表
来源:互联网 发布:淘宝客服快递快捷短语 编辑:程序博客网 时间:2024/05/30 04:09
废话不多说,我就是要读注册表。
百度之后大部分的结果都来自这一篇浏览量快要超过10万的大作:http://xiaohuafyle.iteye.com/blog/1543559
但好死不死这个解决不了我的问题,文中提到两个方法。
(1)使用JDK提供的Preferences类
这方案很方便,也没用任何第三方jar包,但它只能读写HKEY_LOCAL_MACHINE\Software\JavaSoft\prefs下的注册表值,而我是要读写其他非java软件的注册表值。
(2)使用JRegistry或者JNIRegistry
这两个第三方类库都是使用一个dll和一个jar,但这两个第三方都很早就停更了,一个08年一个12年。这导致作者没有提供64位的dll,这让不精通.NET的开发者情何以堪。
最终方案:
网上有个人直接使用java调windows脚本。这成为我唯一可以使用的方案。
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class GetReg {public static void main(String[] args) {try {Process ps = null;//当路径中有空格时,要把路径打上引号。ps = Runtime.getRuntime().exec("reg query \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\360Safe\"");ps.getOutputStream().close();InputStreamReader i = new InputStreamReader(ps.getInputStream());String line;BufferedReader ir = new BufferedReader(i);while ((line = ir.readLine()) != null) {System.out.println(line);}} catch (IOException e) {e.printStackTrace();}}}
当系统为X86:一般软件注册表在"HKEY_LOCAL_MACHINE\SOFTWARE\"下
当系统为X64,程序也是X64:同上
如果架构为X64,但程序是32位,单独放在这里"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node"
再往下目录通常是公司名\大类型\小类型\产品名\子产品名\键值对
但也有简化的,我的目标软件注册表仅仅有两层:公司名\产品名\键值对
附赠判断本系统是64位还是32位的代码:
System.out.println(System.getProperty("sun.arch.data.model"));
X64:64
X86:32
参考资料:
http://xiaohuafyle.iteye.com/blog/1543559
http://blog.csdn.net/mylovepan/article/details/8000237
- java读取windows注册表
- java 读取 注册表
- java读取注册表
- java读取注册表
- java读取注册表中的信息
- JAVA注册表读取写入删除
- Java读取注册表总结之Java API
- Java读取注册表信息到内存中
- Java读取注册表的三种方法
- 读取注册表
- Java读取注册表总结之读取的简单方法
- Java读取注册表总结之com.ice.jni.registry
- C# 操作注册表 写入注册表 修改注册表 读取注册表
- C# 操作注册表 写入注册表 修改注册表 读取注册表
- 读取注册表键值
- C++ 注册表读取函数
- 读取注册表(delphi)
- 读取注册表值
- Java包行业命名规则习惯
- Sybase 当中进行增量备份的几点注意事项
- XP打印时提示后台服务未运行
- spring security3 笔记
- Android 隐藏输入法
- java读取注册表
- ios 使用GCD控制 发送短信 按钮时间间隔
- Y2K Accounting Bug(POJ--2586
- hdu 1170(Ballon Comes!)
- 增量备份和恢复<1>
- js判断undefined类型,undefined,null,NaN的区别
- Core Animaiton - 7
- OpenGL性能优化
- delete 和 delete []的真正区别