【问题标题】:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductId not found running 32bit app on 64bit WindowsHKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductId 未找到在 64 位 Windows 上运行 32 位应用程序
【发布时间】:2010-09-07 07:17:52
【问题描述】:

真的像标题一样。在 regedit 中查找键值存在,但 Wow6432 键(HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion)没有这个键。这意味着 32 位应用程序无法在我的 64 位 Windows 版本上运行......这似乎是错误的,32 位应用程序不应该在没有修改的情况下运行吗?还是这种情况下 32 位应用程序必须调整才能在 64 位 Windows 上运行?

【问题讨论】:

  • 32 位应用程序应该在 64 位操作系统上运行良好。你说键值存在。如果不在 Wow6432 中,它在哪里?
  • @Adrian.. 在 64 位 Windows 上,此值仅存在于 64 位注册表中。

标签: registry wow64


【解决方案1】:

应用程序确实不应该直接访问此注册表值。获取此值的最佳方法是使用 WMI 获取 Win32_OperatingSystem class 的 SerialNumber 属性。这适用于在 Win64 上运行的 32 位应用程序。

另一种方法是在打开注册表项时使用KEY_WOW64_64KEY 标志(不适用于 Windows 2000。)

【讨论】:

  • 我们得到了一堆注册表值......事实上,我们不一定知道它们在编码时到底是什么。只是有几个不起作用。有没有一种方法可以传递标志来打开注册表项,它可以在 32 位和 64 位上运行...如果 Windows API 可以为我执行此操作,我真的不想为两者编写不同的代码。跨度>
  • KEY_WOW64_64KEY 标志适用于 32 位和 64 位。在 32 位 Windows 上,它将被忽略(Windows 2000 除外,它可能会崩溃),而在 64 位 Windows 上,它将始终从 64 位注册表中读取值。
猜你喜欢
  • 2011-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-12
  • 1970-01-01
  • 2016-10-19
  • 2011-05-13
  • 1970-01-01
相关资源
最近更新 更多