2009-02-25 2 views
7

Можно создать дубликат:
read/write to Windows Registry using JavaДоступ к реестра Windows

Мне нужно получить доступ к реестру Windows, из Java .. Кроме того, мне нужно скопировать некоторые записи реестра и, возможно, придется ввести новые переменные реестра используя Java .. кто-то мне помогает ...

ответ

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.

В качестве примечания, убедитесь, что при использовании JNA вы используете Platform.isXxx(), чтобы убедиться, что ваш код действительно может запрашивать реестр на конкретной платформе.

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, - это всего лишь деталь реализации. Предпочтения не являются API-интерфейсом реестра. –

 Смежные вопросы

  • Нет связанных вопросов^_^