/// <summary> /// Attempts to change the value for the desired registry value for the /// specified key. /// </summary> /// <param name="value">The registry value to change to in the form of a /// RegValueData object.</param> /// <param name="keyPath">The path to the key for which to change the /// value of the registry value on.</param> /// <param name="errorMsg">output parameter that contians possible error message.</param> /// <returns>Returns boolean value for if the operation failed or succeded.</returns> public static bool ChangeRegistryValue(RegValueData value, string keyPath, out string errorMsg) { try { RegistryKey key = GetWritableRegistryKey(keyPath); //Invalid can not open key if (key == null) { errorMsg = "You do not have access to open registry: " + keyPath + ", try running client as administrator"; return false; } //Value does not exist if (!key.ContainsValue(value.Name)) { errorMsg = "The value: " + value.Name + " does not exist in: " + keyPath; return false; } bool success = key.SetValueSafe(value.Name, value.Data, value.Kind); //Value could not be created if (!success) { errorMsg = REGISTRY_VALUE_CHANGE_ERROR; return false; } //Value was successfully created errorMsg = ""; return true; } catch (Exception ex) { errorMsg = ex.Message; return false; } }
public RegSeekerMatch(string key, RegValueData[] data, int subkeycount) { Key = key; Data = data; HasSubKeys = (subkeycount > 0); }
private void AddMatch(string key, RegValueData[] values, int subkeycount) { RegSeekerMatch match = new RegSeekerMatch(key, values, subkeycount); matches.Add(match); }
public DoChangeRegistryValue(string keyPath, RegValueData value) { KeyPath = keyPath; Value = value; }