internal static void EnsureRegistryValue(string keyName, string value, string name="")
{
RegistryKey root = HiveToMakeRegistryKeysIn;
var key = root.CreateSubKey(keyName); // may also open an existing key with write permission
try
{
if (key != null)
{
var current = (key.GetValue(name) as string);
if (current != null && current.ToLowerInvariant() == value)
return; // already set as wanted
}
key.SetValue(name, value);
}
catch (UnauthorizedAccessException ex)
{
// If for some reason we aren't allowed to do it, just don't.
Logger.WriteEvent("Unable to set registry entry {0}:{1} to {2}: {3}", keyName, name, value, ex.Message);
}
}