Thread overview | |||||
---|---|---|---|---|---|
|
May 29, 2016 Read registry keys recursively | ||||
---|---|---|---|---|
| ||||
Hello, i am wondering what is wrong with my code: import std.windows.registry; import std.stdio; void main(){ Key lclM = Registry.localMachine(); Key hrdw = lclM.getKey("HARDWARE"); writeRegistryKeys(hrdw); } void writeRegistryKeys(Key k){ foreach(Key key; k.keys){ writeRegistryKeys(key.getKey(key.name())); } writeln(k.name()); } i get: std.windows.registry.RegistryException@std\windows\registry.d(511): Failed to open requested key: "ACPI" Even though there is a key called 'ACPI' under localmachine/hardware? |
May 29, 2016 Re: Read registry keys recursively | ||||
---|---|---|---|---|
| ||||
Posted in reply to TheDGuy | On Sunday, 29 May 2016 at 15:48:49 UTC, TheDGuy wrote: > Hello, > i am wondering what is wrong with my code: > > import std.windows.registry; > import std.stdio; > > void main(){ > Key lclM = Registry.localMachine(); > Key hrdw = lclM.getKey("HARDWARE"); > writeRegistryKeys(hrdw); > } > > void writeRegistryKeys(Key k){ > foreach(Key key; k.keys){ > writeRegistryKeys(key.getKey(key.name())); > } > writeln(k.name()); > } > > i get: std.windows.registry.RegistryException@std\windows\registry.d(511): Failed to open requested key: "ACPI" > > Even though there is a key called 'ACPI' under localmachine/hardware? Well this was a fun thing to figure out. Geez... You have everything good except for one line. > writeRegistryKeys(key.getKey(key.name())); Let's translate that. Assume key = ACPI... SO... ACPI.getkey("ACPI") you should see the problem. Here's the correct line! writeRegistryKeys(k.getKey(key.name())); |
May 29, 2016 Re: Read registry keys recursively | ||||
---|---|---|---|---|
| ||||
Posted in reply to Era Scarecrow | On Sunday, 29 May 2016 at 16:46:34 UTC, Era Scarecrow wrote:
> you should see the problem. Here's the correct line!
>
> writeRegistryKeys(k.getKey(key.name()));
this just occurred to me i tried to keep to the example but i shouldn't have. Since you already have the inner key, just pass that and it works. Far more obvious what's going on now.
writeRegistryKeys(key);
|
Copyright © 1999-2021 by the D Language Foundation