Плагин Notes: где хранятся пользовательские настройки пользователя? - PullRequest
0 голосов
/ 17 ноября 2011

Мы разработали собственный плагин для Notes 8.5.2. Он записывает ряд пользовательских настроек. Класс, который делает это, показан ниже:

import java.util.prefs.Preferences;

/**
 * Provides programmatic access to Windows Registry entries for this plug-in.
 */
public class Registry 
{
    Preferences prefs;    

    /**
     * Initializes a new instance of the Registry class.
     */
    public Registry()
    {
        prefs = Preferences.userNodeForPackage(Registry.class) ;    
    } 

    /**
     * Gets the value of a registry key.
     * 
     * @param keyName  The name of the key to return.
     * 
     * @return A string containing the value of the specified registry key. If a key with the specified name cannot be
     *         found, the return value is an empty string.
     */
    public String GetValue(String keyName)
    {
        try
        {
            return prefs.get(keyName, "NA") ;
        }
        catch(Exception err)
        {
            return  "" ;
        }

    }

    /**
     * Sets the value of a registry key.
     * 
     * @param keyName  The name of the registry key.
     * 
     * @param keyValue The new value for the registry key.
     */
    public void SetValue(String keyName, String keyValue)
    {
        try
        {
            prefs.put(keyName, keyValue);
            prefs.flush();
        }
        catch(Exception err)
        {
        }

    }
}

Пример кода, который его использует, выглядит следующим образом:

Registry wr = new Registry();
String setting1 = wr.GetValue("CustomSetting1");
wr.SetValue("CustomSetting1", newValue);

Теперь я отсканировал реестр Windows, и эти настройки не существуют. Я проиндексировал мой весь жесткий диск и не могу найти эти записи ни в одном файле.

Итак, где, черт возьми, хранятся эти настройки?

1 Ответ

1 голос
/ 20 января 2012

В Windows API предпочтений Java использует Реестр в качестве резервного хранилища для класса Preferences.Ключи начинаются с имени пакета под HKEY_CURRENT_USER\Software\JavaSoft\Prefs.

В вашем коде не указан пакет, поэтому он по умолчанию использует следующее расположение (протестировано в Windows Vista и 7):

HKEY_CURRENT_USER\Software\JavaSoft\Prefs\<unnamed>

Существует пункт под названием "Сэр, каковы ваши предпочтения? " от Ray Djajadinataz из Sun Developer Network, где вы можете получить немного больше информации об этом API с несколькими снимками экрана, показывающими расположение реестра.

Интересно, если бы вы искалидля имени ключа, например, CustomSetting1, и не найти его, потому что он сохранен как / Custom / Setting1, чтобы отметить, что C и S пишутся с большой буквы (см. API документы.)

...