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();}}}
?感觉代码写的很好,在这里给大家分享了
有什么问题请给我留言
谢谢