www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How to use Registry Windows ?

reply "medhi558" <medhi558 gmail.com> writes:
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");
         }
}
Aug 29 2015
next sibling parent Rikki Cattermole <alphaglosined gmail.com> writes:
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(...);
Aug 29 2015
prev sibling parent reply "medhi558" <medhi558 gmail.com> writes:
It doesn't always work the same error.
Aug 29 2015
parent reply "Vladimir Panteleev" <thecybershadow.lists gmail.com> writes:
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.
Aug 29 2015
parent reply "medhi558" <medhi558 gmail.com> writes:
I just tried with administrator rights, but it doesn't work.
Aug 29 2015
parent reply "Vladimir Panteleev" <thecybershadow.lists gmail.com> writes:
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"); } //////////////////////////////////////////////
Aug 29 2015
parent "medhi558" <medhi558 gmail.com> writes:
Thank you it works.
Aug 29 2015