Java 删除注册表项返回null-不确定原因 for(字符串路径:regPath){ if(WinRegistry.readStringSubKeys(WinRegistry.HKEY_当前用户,路径)==null){ System.out.println(路径+“为空”); 继续; } 列表ls=WinRegistry.readStringSubKeys(WinRegistry.HKEY\u当前用户,路径); if(ls==null | | ls.isEmpty()){ 返回; }否则{ 用于(字符串子项:ls){ sub=路径+“\\”+sub; 系统输出打印项次(sub); if(WinRegistry.readStringSubKeys(WinRegistry.HKEY_当前用户,sub)==null){ System.out.println(路径+“为空”); 继续; } ls=WinRegistry.readStringSubKeys(WinRegistry.HKEY\u当前用户,sub); if(ls==null | | ls.isEmpty()){ 返回; }否则{ for(字符串子键:ls){ 子键=子键+子键; System.out.println(子键); } } 系统输出打印项次(sub); } } }
从其中一个答案中我想到了这个!我如何使它通过给定路径的所有键Java 删除注册表项返回null-不确定原因 for(字符串路径:regPath){ if(WinRegistry.readStringSubKeys(WinRegistry.HKEY_当前用户,路径)==null){ System.out.println(路径+“为空”); 继续; } 列表ls=WinRegistry.readStringSubKeys(WinRegistry.HKEY\u当前用户,路径); if(ls==null | | ls.isEmpty()){ 返回; }否则{ 用于(字符串子项:ls){ sub=路径+“\\”+sub; 系统输出打印项次(sub); if(WinRegistry.readStringSubKeys(WinRegistry.HKEY_当前用户,sub)==null){ System.out.println(路径+“为空”); 继续; } ls=WinRegistry.readStringSubKeys(WinRegistry.HKEY\u当前用户,sub); if(ls==null | | ls.isEmpty()){ 返回; }否则{ for(字符串子键:ls){ 子键=子键+子键; System.out.println(子键); } } 系统输出打印项次(sub); } } },java,registry,Java,Registry,从其中一个答案中我想到了这个!我如何使它通过给定路径的所有键 我需要清除上一个activity viewer中的所有信息,它会为您提供我需要删除的注册表值。删除注册表项的API是WinRegistry.deleteKey(int-hkey,String-key)。 但如果存在子键,它会抛出java.lang.IllegalArgumentException:rc=5 key=??? 对于递归删除注册表项,应实现如下方法: for (String path : regPath) {
我需要清除上一个activity viewer中的所有信息,它会为您提供我需要删除的注册表值。删除注册表项的API是
WinRegistry.deleteKey(int-hkey,String-key)
。
但如果存在子键,它会抛出java.lang.IllegalArgumentException:rc=5 key=???
对于递归删除注册表项,应实现如下方法:
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);
}
}
}
private static void deleteKeyAndSub(int-hkey,字符串键)
抛出IllegalArgumentException、IllegalAccessException、InvocationTargetException{
List ls=WinRegistry.readStringSubKeys(hkey,key);
如果(ls==null){
返回;
}else if(ls.isEmpty()){
删除注册表项(hkey,注册表项);
}否则{
for(字符串子键:ls){
子键=键+“\\”+子键;
//System.out.println(“删除子项-”+子项);
deleteKeyAndSub(hkey,subkey);
}
删除注册表项(hkey,注册表项);
}
}
我该如何编辑它,以便它继续进入每个键并列出某个路径/键下的所有文件?对我来说,我更喜欢使用第三个参数列出foundKeys
,将子键添加到列表中,并调用self-inFor(String subkey:list){…}
。
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);
}
}