通过 .NET Framework 访问注册表显示 1 件事;Regedit 显示另一件事

通过 .NET Framework 访问注册表显示 1 件事;Regedit 显示另一件事

我在这里发帖是因为这个问题与如何编程无关,而与一台损坏的计算机有关。

当我在 Visual Studio 2010 即时窗口中运行以下行 VB .Net 代码时:

MsgBox(My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Control Panel\Desktop\ProductName",                                               "SCRNSAVE.EXE", Nothing)) 

然后我收到以下消息框:

---------------------------
Screensaver State Checker
---------------------------
C:\Windows\system32\PhotoScreensaver.scr
---------------------------
OK   
---------------------------

这是没有意义的,因为注册表中甚至没有 SCRNSAVE.exe 条目截屏

在此处输入图片描述

事实上,根据 Windows 控制面板,当前的屏幕保护程序是“(无)”。

顺便说一句,在使用 VB .Net 进行这个小练习之前,我在尝试让屏幕保护程序在正确的时间打开时遇到了各种各样的问题。

我该如何解决这个问题?

系统信息:

  • ThinkPad T400
  • Windows 7 Ultimate 32 位版本
  • 根据要求提供更多信息

答案1

Patrick S 给出了正确答案:

您的代码正在查看 HKEY_CURRENT_USER\Control Panel\Desktop\ProductName,但您的屏幕截图停在 Desktop 键处。从代码中删除“\ProductName”,因为您的屏幕截图是正确的。

相关内容