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", "");

で設定が LocalMachine に設定されている場所Microsoft.Win32.Registry

ただし、コードの最初の行の後に null を取得します。何を与える?

4

3 に答える 3

2

2つの間違い、\ HKEY_LOCAL_MACHINEはそこに属していないので、代わりにRegistry.LocalMachineを使用する必要があります。そして、DefaultSpoolDirectoryはそこに属していません。それは値であり、キーではありません。

SetValue()引数も幸せそうに見えません。プリンターを追加する場合(追加しない場合)は、値ではなくキーを追加する必要があります。

于 2011-04-09T23:50:43.830 に答える
0

リチャードの答えは正しいようですが、もう少し詳しくお知らせするために、プロパティLocalMachineからレジストリのスコープにアクセスできます。詳細については、このMSDNリンクを確認してください。例として、これを試してください。Registry.LocalMachine

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

「\hkey_local_machine」を削除してみてください

于 2011-04-09T23:44:22.073 に答える