2009-02-25 12 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レジストリを調べます。

SideNoteでは、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クラスはレジストリへの書き込みのJavaの好ましい方法です。しかし、私は実際にそれを使用していないので、レジストリ全体またはJVMまたはアプリケーション固有のセクションにアクセスできるかどうかはわかりません。そうでなければ、あなたの目的のように聞こえますが、ここで他の人が納得させたJNIソリューションを見る必要があります。それがうまくいけば、あなたはあなたがそれを移植したならあなたの設定を保存するプラットフォームに依存しない方法を持っています。

+0

アプリケーション固有の特定の部分のみを許可します。 – boutta

+1

PreferencesがWindowsシステム上のレジストリを使用するという事実は実装の詳細です。PreferencesはRegistry APIではありません。 –

関連する問題