Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java代码中的Advapi32util registrykeyexists()返回false,即使windows注册表中存在该项_Java_Registry - Fatal编程技术网

java代码中的Advapi32util registrykeyexists()返回false,即使windows注册表中存在该项

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

我不熟悉Advapi32util的registrykeyexists(root,key)方法,该方法检查windows注册表中根目录下是否存在注册表项“key”(传递给registrykeyexists的项)

我传递的根是“HKEY_本地_机器”。 键类似于“SOFTWARE\ABC\ABC DB”

我看到这个键在window的注册表中。(通过cmd运行“regedit”)

下面是完成这项工作的代码片段

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项目: