C# 无法访问Win7上的HKLM\软件子项

C# 无法访问Win7上的HKLM\软件子项,c#,windows-7,registry,C#,Windows 7,Registry,我正在编写这个程序,需要访问注册表才能获取机器上的一些信息。它应该始终由本地管理组中的某个人运行,并且将在Server2003和2008计算机上使用。基本上,它在我主要编写它的机器上,以及我的Test2003和2008服务器上的大部分工作都很好。问题是,当我使用运行Windows 7的笔记本电脑时,我似乎无法使用它进行测试,因为我在尝试读取或写入HKEY_LOCAL_MACHINE\软件下的注册表时出错 我是以本地管理员的身份登录的,我可以运行Regedit来创建密钥,比如test9999。如果

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

我是以本地管理员的身份登录的,我可以运行Regedit来创建密钥,比如test9999。如果我使用以下命令,它将始终返回空值

RegistryKey testKey=Registry.LocalMachine.OpenSubKey(“软件\test9999”)

我已经尝试删除子键,软件将返回,但我没有得到任何低于这一点


我使用的是MS VC#Express,我尝试以“管理员”身份运行它,也尝试以相同的方式运行.exe,但对于软件下面的任何内容,它仍然会返回null。我遗漏了什么?

发现运行在64位Windows上的32位进程的注册表重定向行为在Windows 7和Windows 2008 R2中发生了更改,这可能解释了为什么它在Windows 2008(我认为不是R2)上工作,而在Windows 7上不工作


请在此处阅读更多信息:

结果表明,在64位Windows上运行的32位进程的注册表重定向行为在Windows 7和Windows 2008 R2中发生了更改,这可能解释了为什么它可以在Windows 2008(我认为不是R2)上工作,而不能在Windows 7上工作


请在此处阅读更多信息:

您是否在64位版本的操作系统上作为32位进程运行?64位操作系统上的32位进程会看到一个稍微不同的注册表。我测试代码的2008服务器也是64位的,它似乎工作得很好,所以我不想提及这一点。我写这篇文章的XP机器最初是32位的,我还试图用Win7机器来测试它,它是64位的,是导致这个问题的机器。如何检查?您是否在64位版本的操作系统上作为32位进程运行?64位操作系统上的32位进程会看到一个稍微不同的注册表。我测试代码的2008服务器也是64位的,它似乎工作得很好,所以我不想提及这一点。我写这篇文章的XP机器最初是32位的,我还试图用Win7机器来测试它,它是64位的,是导致这个问题的机器。我怎么能检查呢?好的,设置一个2008 R2测试框,看起来就是这样。谢谢,为测试设置了一个2008 R2的盒子,它看起来就是这样。谢谢