2011-11-20 42 views
1

HKLM \ SOFTWARE子键我在写这个程序,将需要访问注册表中拉机上的一些信息。它应该始终由本地管理员组中的某个人运行,并且将在Server 2003和2008计算机上使用。基本上它在我主要写在盒子上的绝大部分工作正常,以及我的测试2003和2008服务器。问题是,当我在我的笔记本电脑上运行Windows 7时,似乎无法将其用于测试,因为我在尝试读取或写入HKEY_LOCAL_MACHINE \ SOFTWARE下的注册表时遇到错误。无法访问Win7上

我的身份登录谁是本地管理员用户,我可以运行注册表编辑器创建一个密钥,如test9999。如果我使用以下它将始终返回null。

的RegistryKey密押= Registry.LocalMachine.OpenSubKey( “SOFTWARE \ test9999”);

我试图丢弃的子项,软件会回来,但我一直没能得到下面的事情。

我使用MS VC#Express和我试着运行它“以管理员身份”,以及试图运行.exe是同样的方式,但它仍继续低于软件什么返回null。我错过了什么?

+1

你或许运行的32位进程的操作系统的64位版本? 64位操作系统上的32位进程看到一个稍微不同的注册表。 – zmbq

+0

2008年我测试代码的服务器也是64位,它似乎工作得很好,所以我没有想到提及这一点。我最初编写的XP机器是32位,而我试图用来测试它的Win 7机器是64位,并且是导致此问题的原因。我如何检查? – LazarusG

回答

0

原因在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

+0

好的,设置一个2008 R2的盒子进行测试,看起来就是这个样子。谢谢 – LazarusG