0

我正在尝试从 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", "");

其中 settings 设置为 LocalMachine in Microsoft.Win32.Registry

但是,在第一行代码之后我会得到 null 。是什么赋予了?

4

3 回答 3

2

两个错误,\HKEY_LOCAL_MACHINE 不属于那里,你应该使用 Registry.LocalMachine 代替。而 DefaultSpoolDirectory 不属于那里,它是一个值,而不是一个键。

SetValue() 参数看起来也不开心。如果要添加打印机(不要),则需要添加键,而不是值。

于 2011-04-09T23:50:43.830 回答
0

尝试删除“\hkey_local_machine”

于 2011-04-09T23:44:22.073 回答
0

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

var openSubKey = Registry.LocalMachine.OpenSubKey(
    @"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers");
于 2011-04-09T23:51:00.430 回答