gpt4 book ai didi

java - 使用 JAVA 和 JNA 在 64 位 Win 7 上读/写 Windows 注册表

转载 作者:搜寻专家 更新时间:2023-11-01 03:35:05 25 4
gpt4 key购买 nike

我正在尝试使用 JAVA 在 64 位 Win7 上读取/写入 Windows 注册表。

首先,我尝试了 JDK java.util.prefs.Preferences and its reflection usage .这是一个很好的解决方案,但它只支持读取/写入 REG_SZ 类型(字符串)值。

不幸的是,我需要读/写REG_BINARY,所以放弃吧。

其次,我尝试了JNI Registry .读是可以的,但是写经常会失败,因为写HKLM需要管理员权限。我不知道如何在JAVA中获得管理员权限。

最后,我尝试了 JNA(Java Native Access),这是一个用于处理本地库的优秀项目,并且通过 Advapi32Util 在平台库 (platform.jar) 中支持 Windows 注册表Advapi32。它非常好用而且简单易用。并且编写注册表不需要管理员权限。

但是如何在 Win7 上的 64 位 JVM 中读取/写入 32 位注册表(在 WOW6432Node 节点下)?

默认情况下,64 位节点在 64 位 JVM 中读取/写入,32 位节点在 32 位 JVM 中读取/写入。

但在 64 位 JVM 中,我想读/写 32 位节点(例如,HKLM->SOFTWARE->Wow6432Node->ODBC)。我该怎么做?

最佳答案

我得到了答案:使用 64 位 Windows:

  1. 一个 32 位 JVM,访问 HKLM->SOFTWARE->ODBC 将被重定向到 HKLM->SOFTWARE->Wow6432Node->ODBC
  2. 64 位 JVM,访问 HKLM->SOFTWARE->ODBC 将是 HKLM->SOFTWARE->ODBC(这是 64 位注册表)。
  3. 32 位或 64 位 JVM,允许访问 HKLM->SOFTWARE->Wow6432Node->ODBC。 (但是在C++中,win32 exe不能直接访问HKLM->SOFTWARE->Wow6432Node->ODBC,应该访问带有wow64标志的HKLM->SOFTWARE->ODBC) .

关于java - 使用 JAVA 和 JNA 在 64 位 Win 7 上读/写 Windows 注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34407938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com