Доступ к HKEY_CURRENT_USER через настройки в Java

1

Я пытаюсь написать раздел реестра в следующем пути в реестре:

HKEY_CURRENT_USER → Программное обеспечение → TestApp

В настоящее время я делаю:

    public static void main(String[] args)
{

    Preferences p = Preferences.userRoot().node("/HKEY_CURRENT_USER/Software/TestApp");
    p.put("TestKey", "TestValue");
}

Но он записывает его в HKEY_CURRENT_USER → Программное обеспечение → JavaSoft → Prefs ->/H/K/E/Y_/C/U/R/R/E/N/T/_/U/S/E/R - > Программное обеспечение → Тест/приложение

Как заставить его следовать абсолютному пути и почему он добавляет лишние косые черты?

Теги:
registry
preferences

2 ответа

1

Вы можете взглянуть на это красивое сообщение в блоге о чтении/записи реестра

Я могу обратить ваше внимание на этот отрывок кода:

/**
   * Write a value in a given key/value name
   * @param hkey
   * @param key
   * @param valueName
   * @param value
   * @throws IllegalArgumentException
   * @throws IllegalAccessException
   * @throws InvocationTargetException
   */
  public static void writeStringValue
    (int hkey, String key, String valueName, String value)
    throws IllegalArgumentException, IllegalAccessException,
    InvocationTargetException
  {
    if (hkey == HKEY_LOCAL_MACHINE) {
      writeStringValue(systemRoot, hkey, key, valueName, value);
    }
    else if (hkey == HKEY_CURRENT_USER) {
      writeStringValue(userRoot, hkey, key, valueName, value);
    }
    else {
      throw new IllegalArgumentException("hkey=" + hkey);
    }
  }

Я думаю, что это решение очень элегантно в onder для управления операциями чтения/записи с реестром.

0

Как заставить его следовать абсолютному пути

Вы можете использовать отражение для доступа к приватным методам в классе java.util.prefs.Preferences. Подробнее см. В этом ответе: qaru.site/questions/24918/...

Тем не менее, я не рекомендую использовать этот подход, поскольку он может сломаться в любое время.

почему он добавляет лишние косые черты?

Посмотрите на этот ответ: qaru.site/questions/546655/...

Ключи реестра сохраняются в любом случае, но не учитывают регистр. Например, если у вас есть ключ "Rbi", вы не можете сделать другой ключ с именем "RBi". Случай сохраняется, но игнорируется. Решение Sun для чувствительности к регистру заключалось в добавлении косых черт к ключу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню