2017-02-11 11 views
0
 for (String path : regPath) { 
        if (WinRegistry.readStringSubKeys(WinRegistry.HKEY_CURRENT_USER, path) == null) { 
         System.out.println(path + " was null."); 
         continue; 
        } 

        List<String> ls = WinRegistry.readStringSubKeys(WinRegistry.HKEY_CURRENT_USER, path); 
        if (ls == null || ls.isEmpty()) { 
         return; 
        } else { 
         for (String sub : ls) { 
          sub = path + "\\" + sub; 
          System.out.println(sub); 
          if (WinRegistry.readStringSubKeys(WinRegistry.HKEY_CURRENT_USER, sub) == null) { 
           System.out.println(path + " was null."); 
           continue; 
          } 
          ls = WinRegistry.readStringSubKeys(WinRegistry.HKEY_CURRENT_USER, sub); 
          if (ls == null || ls.isEmpty()) { 
           return; 
          } else { 
           for (String subKey : ls) { 
            subKey = sub + subKey; 
            System.out.println(subKey); 
           } 
          } 

          System.out.println(sub); 
         } 
        } 
       } 

Из одного из ответов я придумал это! Как я могу сделать это так, чтобы он проходил через все ключи заданного пути?Удаление ключей реестра возвращается null - не уверены почему

Мне нужно очистить всю информацию от последнего средства просмотра активности, here оно дает вам значения реестра, которые мне нужно удалить.

ответ

0

API для удаления раздела реестра WinRegistry.deleteKey(int hkey, String key). Но он бросает java.lang.IllegalArgumentException: rc=5 key=???, если существует под-ключ.

Для удаления ключа реестра рекурсивно, вы должны реализовать метод, как это:

private static void deleteKeyAndSub(int hkey, String key) 
    throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { 
    List<String> ls = WinRegistry.readStringSubKeys(hkey, key); 
    if(ls == null) { 
    return; 
    } else if(ls.isEmpty()) { 
    WinRegistry.deleteKey(hkey, key); 
    } else { 
    for (String subkey : ls) { 
     subkey = key+"\\"+subkey; 
     //System.out.println("delete subkey - "+subkey); 
     deleteKeyAndSub(hkey, subkey); 
    } 
    WinRegistry.deleteKey(hkey, key); 
    } 
} 
+0

Как бы я изменить это так, что он будет продолжать идти в каждый ключ и список всех файлов под определенный путь/ключ ? – Exuro

+0

Для меня я предпочитаю иметь третий параметр 'List foundKeys', добавить в список под-ключи и вызвать self внутри' for (String subkey: list) {...} '. –

+0

хорошо спасибо. – Exuro

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

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