gpt4 book ai didi

java - 如何在Java程序中启用和禁用KEY_WOW64_32KEY

转载 作者:行者123 更新时间:2023-12-01 09:03:45 26 4
gpt4 key购买 nike

我有一个 32 位应用程序,它读取注册表并在 HKEY_LOCAL_MACHINE\Software\MyApp\中查找值,但在 64 位版本的 Windows 上运行时,该值位于 HKEY_LOCAL_MACHINE\Software\Wow6432Node\MyApp 下。但我的应用程序仍然在 HKEY_LOCAL_MACHINE\Software\MyApp\

中查找值

我正在使用 com.zerog.ia.api.pub.SimpleRegistryManager api 进行注册表操作该类用于访问Win32系统注册表。

在 MSDN 的引用文献中,KEY_WOW64_32KEY 标志用于从 32 位或 64 位应用程序访问 32 位 key 。 https://msdn.microsoft.com/en-us/library/windows/desktop/aa384129(v=vs.85).aspx

有什么方法可以使用 Java api 启用或禁用 KEY_WOW64_32KEY 标志

最佳答案

我怀疑如果您的程序在 32 位版本的 java.exe 下运行,则无需修改即可运行。能否在64位系统上运行32位java.exe看看是否有效?

我的建议是引用 this link 了解如何检测您的程序是在 32 位还是 64 位 VM 下运行。然后更改代码以在 64 位上运行时引用 Wow64 注册表项路径。

我不熟悉您所说的 SimpleRegistryManager 类,但该实现也可能尝试根据 VM 类型传递 KEY_WOW_ 标志,并且与您真正希望它执行的操作相冲突。

对于 Windows 开发人员来说,这并不是一个罕见的错误。 (特别是在 64 位 Windows 上与各种 32 位和 64 位应用程序互操作时。)有些人采取了一种懒惰的方法。当他们尝试读取注册表项时,如果该注册表项不存在于 HKLM\Software\MyApp 中,则代码将回退到尝试从 HKLM\Software\中读取该注册表项Wow6432Node\MyApp

关于java - 如何在Java程序中启用和禁用KEY_WOW64_32KEY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41456832/

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