【发布时间】: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 位的,是导致问题的原因。我该如何检查?