자바에서 윈도우 레지스트리 내용 읽어 오기
자바 프로그램을 이용하여 윈도우 시스템의 레지스트리를 다루거나 어떤 프로그램을 윈도우의 서비스에 등록 또는 해제 하는 기능 등을 구현 할 수 있습니다.
이러한 것이 가능 하기 위해서는 관련 Library를 다운 받아 JNI를 이용하면 가능 한데 다음과 같이 하시면 됩니다.
우선 http://sourceforge.net/project/showfiles.php?group_id=70882&release_id=133472 에서 jst1.2.zip 파일을 다운 받아 압축을 해제 하면 jst.dll 과 jst.jar 파일이 나옵니다.
각 파일이 하는 일은 dll인 경우 윈도우 레지스트리를 직접 핸들링 하는 JNI를 위한 구현부가 들어 있으며, jar 파일인 경우 그 DLL을 사용하여 레지스트리를 다루기 위한 Java API 패키지 입니다.
jst.dll은 windows아래 system32에 복사 하시구요, jar 파일은 자바홈/jre/lib/ext 폴더에 위치 시킵니다.
아래 예제는 윈도우 시스템의 레지스트리에서 ORACLE_HOME이라는 값을 읽어 오는 예제 입니다.
[RegistryTest.java]
/*
* Created on 2005. 1. 7
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
/**
* @author 이종철
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
import com.jobjects.jst.*;
public class RegistryTest {
public static void main(String[] args) throws Exception {
if (!SystemToolkit.doesSupportRegistry()) {
System.out.println("레지스트리 다루는 것을 지원 하지 않습니다");
return;
}
RegistryManager rm = SystemToolkit.getRegistryManager();
int top = RegistryKey.KEY_LOCAL_MACHINE;
String sub = "SOFTWARE\\ORACLE";
String prop = "ORACLE_HOME";
RegistryKey rk = rm.openRegistryKey(top, sub);
System.out.println("오라클 홈디렉토리 -->" + rk.getStringProperty(prop));
//이번에는 새로운 값을 setting 합니다. NLS_LANG을 setting 해 볼까요...
prop = "NLS_LANG";
rk.putStringProperty(prop,"KOREAN_KOREA.KO16KSC5601");
System.out.println("NLS_LANG -->" + rk.getStringProperty(prop));
//이번에는 위에서 Setting한것을 삭제 합니다.
//rk.removeStringProperty(prop);
}
}
[결과]
오라클 홈디렉토리 -->C:\oracle\ora92
NLS_LANG -->KOREAN_KOREA.KO16KSC5601
자바 프로그램을 이용하여 윈도우 시스템의 레지스트리를 다루거나 어떤 프로그램을 윈도우의 서비스에 등록 또는 해제 하는 기능 등을 구현 할 수 있습니다.
이러한 것이 가능 하기 위해서는 관련 Library를 다운 받아 JNI를 이용하면 가능 한데 다음과 같이 하시면 됩니다.
우선 http://sourceforge.net/project/showfiles.php?group_id=70882&release_id=133472 에서 jst1.2.zip 파일을 다운 받아 압축을 해제 하면 jst.dll 과 jst.jar 파일이 나옵니다.
각 파일이 하는 일은 dll인 경우 윈도우 레지스트리를 직접 핸들링 하는 JNI를 위한 구현부가 들어 있으며, jar 파일인 경우 그 DLL을 사용하여 레지스트리를 다루기 위한 Java API 패키지 입니다.
jst.dll은 windows아래 system32에 복사 하시구요, jar 파일은 자바홈/jre/lib/ext 폴더에 위치 시킵니다.
아래 예제는 윈도우 시스템의 레지스트리에서 ORACLE_HOME이라는 값을 읽어 오는 예제 입니다.
[RegistryTest.java]
/*
* Created on 2005. 1. 7
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
/**
* @author 이종철
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
import com.jobjects.jst.*;
public class RegistryTest {
public static void main(String[] args) throws Exception {
if (!SystemToolkit.doesSupportRegistry()) {
System.out.println("레지스트리 다루는 것을 지원 하지 않습니다");
return;
}
RegistryManager rm = SystemToolkit.getRegistryManager();
int top = RegistryKey.KEY_LOCAL_MACHINE;
String sub = "SOFTWARE\\ORACLE";
String prop = "ORACLE_HOME";
RegistryKey rk = rm.openRegistryKey(top, sub);
System.out.println("오라클 홈디렉토리 -->" + rk.getStringProperty(prop));
//이번에는 새로운 값을 setting 합니다. NLS_LANG을 setting 해 볼까요...
prop = "NLS_LANG";
rk.putStringProperty(prop,"KOREAN_KOREA.KO16KSC5601");
System.out.println("NLS_LANG -->" + rk.getStringProperty(prop));
//이번에는 위에서 Setting한것을 삭제 합니다.
//rk.removeStringProperty(prop);
}
}
[결과]
오라클 홈디렉토리 -->C:\oracle\ora92
NLS_LANG -->KOREAN_KOREA.KO16KSC5601
'Programming > JAVA' 카테고리의 다른 글
Garbage Collector 호출하기 (0) | 2008.04.28 |
---|---|
OutOfMemory 해결법 (0) | 2008.04.28 |
JBuilder에서 CVS 소스버전 콘트롤 (0) | 2008.04.28 |
Sort 알고리즘(삽입정렬) (0) | 2008.04.28 |
Sort 알고리즘(버블정렬) (0) | 2008.04.28 |