从注册表获取值(在右窗格中)

本文关键字:注册表 获取 | 更新日期: 2023-09-27 17:49:30

我试图从Windows的注册表中获得一个值,它位于几个分支下:

HKEY_LOCAL_MACHINE'SOFTWARE'Microsoft'Windows NT'CurrentVersion'... 

给定以下代码:

RegistryKey openSubKey = settings.OpenSubKey(
    @"''HKEY_LOCAL_MACHINE'SOFTWARE'Microsoft'Windows NT'CurrentVersion'Print'Printers'DefaultSpoolDirectory");
openSubKey.SetValue("printername", "");

其中Microsoft.Win32.Registry中的settings设置为LocalMachine。

然而,在第一行代码之后,我将得到null。到底发生了什么事?

从注册表获取值(在右窗格中)

两个错误,'HKEY_LOCAL_MACHINE不属于那里,你应该使用注册表。LocalMachine代替。DefaultSpoolDirectory不属于那里,它是一个值,而不是一个键。

SetValue()参数看起来也不太好。如果你想添加一个打印机(不要),那么你需要添加一个键,而不是一个值。

尝试删除"'hkey_local_machine"

Richard的回答似乎是正确的,但只是为了进一步通知您,您可以通过Registry.LocalMachine属性访问注册表的LocalMachine范围-查看此MSDN链接了解详细信息。例如,试试这样做:

var openSubKey = Registry.LocalMachine.OpenSubKey(
    @"SOFTWARE'Microsoft'Windows NT'CurrentVersion'Print'Printers");