I try to change some values โโin the registry using D, but it keeps giving me the following error:
Value cannot be set
However, if I write the exact code in C #, then it works. Is this a problem with the registry module in D or is it a problem with how I use it?
D
module main; import std.windows.registry; import std.stdio; import core.thread; void main() { string languageName = "English"; string languageCode = "en_uk"; const uint languageValue = 0x00000001; writefln("Name '%s' Code '%s' Value '%s'", languageName, languageCode, languageValue); writeln("Press ENTER to change language."); readln(); writefln("Changing language of Sims 2 to '%s' ...", languageName); Thread.sleep(dur!("msecs")(2000)); string keyName; try { enum versions = [ "", "Apartment Life", "Bon Voyage", "Celebration Stuff", "Family Fun Stuff", "Free Time", "Fun with Pets Collection", "Glamour Life Stuff", "HM Fashion Stuff", "IKEA Home Stuff", "Kitchen & Bath Interior Design Stuff", "Mansion and Garden Stuff", "Nightlife", "Open For Business", "Pets", "Seasons", "Teen Style Stuff", "University" ]; foreach (simsVersion; versions) { keyName = "SOFTWARE\\Wow6432Node\\EA GAMES\\The Sims 2"; if (simsVersion && simsVersion.length) keyName ~= " " ~ simsVersion; // main { scope auto key = Registry.localMachine.getKey(keyName); key.setValue("Language", languageName); key.setValue("Locale", languageCode); key.flush(); } // sub { keyName ~= "\\1.0"; scope auto key = Registry.localMachine.getKey(keyName); key.setValue("Language", languageValue); key.setValue("LanguageName", languageName); key.flush(); } writefln("Changed language of '%s' ...", simsVersion); } writeln("Success..."); Thread.sleep(dur!("msecs")(2000)); } catch (Throwable t) { writefln("Key Entry: '%s'", keyName); writeln(t); readln(); } }
WITH#
class Program { public static void Main(string[] args) { const string languageName = "English"; const string languageCode = "en_uk"; const uint languageValue = 0x00000001; string[] versions = new string[] { "", "Apartment Life", "Bon Voyage", "Celebration Stuff", "Family Fun Stuff", "FreeTime", "Fun with Pets Collection", "Glamour Life Stuff", "HM Fashion Stuff", "IKEA Home Stuff", "Kitchen & Bath Interior Design Stuff", "Mansion and Garden Stuff", "Nightlife", "Open For Business", "Pets", "Seasons", "Teen Style Stuff", "University" }; const string mainKey = @"SOFTWARE\Wow6432Node\EA GAMES\The Sims 2"; string keyName = ""; try { Console.WriteLine("Name '{0}' Code '{1}' Value '{2}'", languageName, languageCode, languageValue); Console.WriteLine("Press ENTER to change language."); Console.ReadLine(); Console.WriteLine("Changing language of Sims 2 to '{0}' ...", languageName); Thread.Sleep(2000); foreach (var simsVersion in versions) { if (!string.IsNullOrWhiteSpace(simsVersion)) keyName = mainKey + " " + simsVersion; else keyName = mainKey;