2009-02-25 6 views

답변

5

나는 Java Native Access (JNA) library을 권하고 싶습니다. JNI를 둘러싼 멋진 래퍼입니다. this mailing list post에 따르면, 그들은 이미 네이티브 Windows 레지스트리 함수 호출을 처리하는 래퍼를 가지고 있습니다.

프로젝트에 JNA 라이브러리를 추가하는 경우 the relevant source you'll want is the Registry.java class. 거기에서 그 클래스의 메소드를 호출하여 Windows 레지스트리를 조사하십시오.

부수적으로, Platform.isXxx()를 사용하는 JNA를 사용할 때 코드가 실제로 특정 플랫폼에서 레지스트리를 쿼리 할 수 ​​있는지 확인하십시오.

2

예는 다음과 같이 될 것입니다 :

import com.ice.jni.registry.*; 

public class DeleteEnvironmentVar{ 
public DeleteEnvironmentVar(String variable, String value) throws Exception { 

     RegistryKey machine = Registry.getTopLevelKey("HKEY_LOCAL_MACHINE"); 
     RegistryKey environment = machine.openSubKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment", RegistryKey.ACCESS_WRITE); 
     try { 
      if (value == null) { //Delete the variable in case value is empty 
       environment.deleteValue(variable); 
      }    
     } 
     catch(NoSuchValueException nsve) {} 
     catch(NoSuchKeyException nske) {}   
    } 
} 
1

Preferences 클래스는 레지스트리에 쓰기의 자바 선호하는 방법입니다. 그러나 실제로 사용하지는 않았으므로 전체 레지스트리 또는 JVM 또는 응용 프로그램과 관련된 섹션에 액세스 할 수 있는지 여부는 알 수 없습니다. 그렇지 않다면, 여기에 다른 사람들이 제시 한 JNI 솔루션을 살펴볼 필요가있을 것입니다. 그것이 작동한다면, 당신은 당신이 그것을 포팅했다면 당신의 설정을 저장하는 플랫폼 독립적 인 방법을 가지고 있습니다.

+0

응용 프로그램에 대해서만 고유 한 부분 만 허용됩니다. – boutta

+1

환경 설정이 Windows 시스템에서 레지스트리를 사용한다는 사실은 단지 구현 세부 사항입니다 - 환경 설정은 레지스트리 API가 아닙니다. –

관련 문제