我正在编写这个程序,需要访问注册表才能在机器上提取一些信息。它应始终由Local Admin组中的某个人运行,并将在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。我错过了什么?
答案 0 :(得分:0)
在Windows 7和Windows 2008 R2中更改了在64位Windows上运行的32位进程的注册表重定向行为,这可以解释为什么它适用于Windows 2008(不是我假设的R2)而不是Windows 7。
在此处详细了解:http://msdn.microsoft.com/en-us/library/aa384232(v=vs.85).aspx