Thread overview
How to use Registry Windows ?
Aug 29, 2015
medhi558
Aug 29, 2015
Rikki Cattermole
Aug 29, 2015
medhi558
Aug 29, 2015
Vladimir Panteleev
Aug 29, 2015
medhi558
Aug 29, 2015
Vladimir Panteleev
Aug 29, 2015
medhi558
August 29, 2015
Hello,
I can't seem to use Registry, I tried to many attraction ways but I have every time an error "Value cannot be set".


Exemple code :

module main;

import std.stdio;
import std.windows.registry;

void main(string[] args)
{
	version(Windows)
	{
                 Key registryKey = Registry.localMachine()
			.createKey("Software")
			.createKey("Microsoft")
			.createKey("Windows")
			.createKey("CurrentVersion")
			.createKey("Run");


		registryKey.setValue("key", "value");
        }
}
August 29, 2015
On 29/08/15 9:14 PM, medhi558 wrote:
> Hello,
> I can't seem to use Registry, I tried to many attraction ways but I have
> every time an error "Value cannot be set".
>
>
> Exemple code :
>
> module main;
>
> import std.stdio;
> import std.windows.registry;
>
> void main(string[] args)
> {
>      version(Windows)
>      {
>                   Key registryKey = Registry.localMachine()
>              .createKey("Software")
>              .createKey("Microsoft")
>              .createKey("Windows")
>              .createKey("CurrentVersion")
>              .createKey("Run");
>
>
>          registryKey.setValue("key", "value");
>          }
> }

Humm, try:

auto regKey = Registry.localMachine()
.getKey("Software")
.getKey("Microsoft")
.getKey("Windows")
.getKey("CurrentVersion")
.getKey("Run");

regKey.setValue(...);

August 29, 2015
It doesn't always work the same error.

August 29, 2015
On Saturday, 29 August 2015 at 09:35:47 UTC, medhi558 wrote:
> It doesn't always work the same error.

Is your program running with administrator rights? Unprivileged programs may not write to HKEY_LOCAL_MACHINE by default.
August 29, 2015
I just tried with administrator rights, but it doesn't work.
August 29, 2015
On Saturday, 29 August 2015 at 09:44:06 UTC, medhi558 wrote:
> I just tried with administrator rights, but it doesn't work.

You need to use a REGSAM value (e.g. KEY_ALL_ACCESS) to open the key with write access:

/////////////////// test.d ///////////////////
import std.windows.registry;

void main()
{
    auto regKey = Registry.currentUser()
    .getKey("Software")
    .getKey("Microsoft")
    .getKey("Windows")
    .getKey("CurrentVersion")
    .getKey("Run", REGSAM.KEY_ALL_ACCESS);

    regKey.setValue("Calculator", "calc.exe");
}
//////////////////////////////////////////////

August 29, 2015
Thank you it works.