首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java 不要JNI读注册表

2012-12-18 
Java 不用JNI读注册表这个真的困难啊。Java在web上你说怎么能调DLL那?想了用JNI方案不通,感觉像是死路一样,

Java 不用JNI读注册表

这个真的困难啊。Java在web上你说怎么能调DLL那?

想了用JNI方案不通,感觉像是死路一样,但还是有方法的。发现windows 系统带有reg Doc命令

好吧我想这个方案应该可以

现在不清楚java 程序掉DLL 在web上行不行,不知道Server端能不能读到DLL的位置,一般的DLL都在系统的环境中或者指定目录。Java 的System.loadLibrary()方法是不能输入路径的。这个很让人头痛。我想应该是有解决方案的,基本就是将dll加入到path中去

其实我们可以用reg Doc命令来查看或者修改注册表的

下面就是代码。嘿嘿

package com.chenhailong;import java.io.IOException;import java.io.InputStream;import java.io.StringWriter;/** *  * @author chenhailong 下午10:09:11 com.chenhailong */public class Registry {public static void main(String args[]){try {Process process  =Runtime.getRuntime().exec("reg query HKLM\\SOFTWARE\\Yodao\\DeskDict  /v Install");StreamReader reader = new StreamReader(process.getInputStream());reader.start();process.waitFor();reader.join();String output = reader.getResult(); if (!output.contains("")) {output=null;}String[] parsed = output.split("\t"); System.out.println(parsed[parsed.length-1]);} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();} }static class StreamReader extends Thread {private InputStream is;private StringWriter sw = new StringWriter();;public StreamReader(InputStream is) {this.is = is;}public void run() {try {int c;while ((c = is.read()) != -1)sw.write(c);} catch (IOException e) {}}public String getResult() {return sw.toString();}}}

?感觉代码写的很好,在这里给大家分享了

有什么问题请给我留言

谢谢

热点排行