【问题标题】:Unable to access HKLM\SOFTWARE sub keys on Win7Win7 无法访问 HKLM\SOFTWARE 子键
【发布时间】:2012-01-02 06:14:22
【问题描述】:

我正在编写这个程序,它需要访问注册表来获取机器上的一些信息。它应该始终由本地管理员组中的某个人运行,并将在 Server 2003 和 2008 机器上使用。基本上,它在我主要编写它的机器上以及我的测试 2003 和 2008 服务器上大部分都运行良好。问题是,当我使用运行 Windows 7 的笔记本电脑时,我似乎无法使用它进行测试,因为在尝试读取或写入 HKEY_LOCAL_MACHINE\SOFTWARE 下的注册表时出现错误。

我以本地管理员用户身份登录,我可以运行 Regedit 来创建密钥,例如 test9999。如果我使用以下内容,它将始终返回 null。

RegistryKey testKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\test9999");

我已尝试删除子项,SOFTWARE 将返回,但我无法获得低于此值的任何内容。

我正在使用 MS VC# Express,我尝试以“管理员身份”运行它,并尝试以相同的方式运行 .exe,但对于软件以下的任何内容,它仍然继续返回 null。我错过了什么?

【问题讨论】:

  • 您是否在 64 位版本的操作系统上作为 32 位进程运行? 64 位操作系统上的 32 位进程看到的注册表略有不同。
  • 我测试代码的 2008 Server 也是 64 位的,而且它似乎工作得很好,所以我没想提这个。我最初写这篇文章的 XP 机器是 32 位的,而我也试图用来测试它的 Win 7 机器是 64 位的,是导致问题的原因。我该如何检查?

标签: c# windows-7 registry


【解决方案1】:

原来在 64 位 Windows 上运行的 32 位进程的注册表重定向行为在 Windows 7 和 Windows 2008 R2 中发生了变化,这可以解释为什么它可以在 Windows 2008(我假设不是 R2)上运行,而不是在 Windows 7 上运行。

在此处了解更多信息:http://msdn.microsoft.com/en-us/library/aa384232(v=vs.85).aspx

【讨论】:

  • 好的,设置一个 2008 R2 盒子进行测试,看起来就是这样。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
  • 2015-03-31
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 2016-10-19
相关资源
最近更新 更多