删除注册表项返回null - 不知道为什么

时间:2017-02-11 18:13:48

标签: java registry

VALUES (NULL, '$users_FirstName','$users_LastName', '$users_Address', '$users_City', '$users_Address', '$users_State', '$users_Zip', '$users_PhoneNumber', '$users_Email', '$users_PetType', '$users_PetName', '$users_Breed', '$users_PetName', '$users_NeuteredOrSpayed', '$users_PetBirthday',) 

从其中一个答案我想出了这个!如何才能使它通过给定路径的所有键?

我需要清除上一个活动查看器中的所有信息,here它会为您提供我需要删除的注册表值。

1 个答案:

答案 0 :(得分: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);
  }
}