java代码中的Advapi32util registrykeyexists()返回false,即使windows注册表中存在该项
我不熟悉Advapi32util的registrykeyexists(root,key)方法,该方法检查windows注册表中根目录下是否存在注册表项“key”(传递给registrykeyexists的项) 我传递的根是“HKEY_本地_机器”。 键类似于“SOFTWARE\ABC\ABC DB” 我看到这个键在window的注册表中。(通过cmd运行“regedit”) 下面是完成这项工作的代码片段java代码中的Advapi32util registrykeyexists()返回false,即使windows注册表中存在该项,java,registry,Java,Registry,我不熟悉Advapi32util的registrykeyexists(root,key)方法,该方法检查windows注册表中根目录下是否存在注册表项“key”(传递给registrykeyexists的项) 我传递的根是“HKEY_本地_机器”。 键类似于“SOFTWARE\ABC\ABC DB” 我看到这个键在window的注册表中。(通过cmd运行“regedit”) 下面是完成这项工作的代码片段 public static String getRegistryData(WinReg.HK
public static String getRegistryData(WinReg.HKEY root, String key, String value) {
System.out.println("Registry key exists status:" + Advapi32Util.registryKeyExists(root, key));
if (Advapi32Util.registryKeyExists(root, key)) {
String retVal = Advapi32Util.registryGetStringValue(root, key, value);
return retVal;
} else {
return null;
}
}
因此,在这里调试时,Advapi32Util.registryKeyExists(root,key)返回false
有人能帮我吗??我将不胜感激
提前谢谢。我知道它已经有几个月了,但我和你有同样的问题。。我希望这个答案能帮助更多的人 这可能有点混乱,但这些项的命名方式如下: 键类似于路径,值是键中的每个值。理解它之后,应该更容易进行编码。方法Advapi32Util.registryKeyExists查找键(换句话说,路径),因此它对您没有帮助 例如,如果要验证值计数器是否存在于密钥HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009中,则应使用以下方法:
boolean keyExists = Advapi32Util.registryValueExists(WinReg.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Perflib\\009", "Counter");
在您的情况下,您的方法是:
public static String getRegistryData(WinReg.HKEY root, String key, String value) {
System.out.println("Registry key exists status:" + Advapi32Util.registryValueExists(root, key, value));
if (Advapi32Util.registryValueExists(root, key, value)) {
String retVal = Advapi32Util.registryGetStringValue(root, key, value);
return retVal;
} else {
return null;
}
}
如果您对他们的GitHub项目是如何实现的感到好奇,您可以看看他们的GitHub项目: