public RegistryValueViewModel(RegistryValueDto dto) { Dto = dto; switch (dto) { case var val when val is StringRegistryValueDto typedVal: ValueString = typedVal.Value; break; case var val when val is BinaryRegistryValueDto typedVal: ValueString = BitConverter.ToString(typedVal.Value).Replace('-', ' '); break; case var val when val is DWordRegistryValueDto typedVal: ValueString = typedVal.Value.ToString(); break; case var val when val is QWordRegistryValueDto typedVal: ValueString = typedVal.Value.ToString(); break; case var val when val is MultiStringRegistryValueDto typedVal: ValueString = string.Join("\t", typedVal.Value); break; case var val when val is ExpandableStringRegistryValueDto typedVal: ValueString = typedVal.Value; break; } }
public void InitializeEdit(RegistryValueDto registryValue) { Value = JsonConvert.DeserializeObject <RegistryValueDto>(JsonConvert.SerializeObject(registryValue, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() })); //clone Name = string.IsNullOrEmpty(registryValue.Name) ? Tx.T("RegistryEditor:DefaultValue") : registryValue.Name; Title = Tx.T("RegistryEditor:EditValueTitle", "name", Tx.T($"RegistryEditor:Type.{registryValue.Type}Value")); }
public IActionResult CreateSubKeyValue([FromQuery] string path, [FromBody] RegistryValueDto valueDto) { var(registryHive, relativePath) = RegistryHelper.UnpackPath(path); using (var regKey = RegistryHelper.OpenRegistry(registryHive).OpenSubKey(relativePath ?? string.Empty, RegistryKeyPermissionCheck.ReadWriteSubTree)) { object value; RegistryValueKind kind; switch (valueDto) { case var val when val is StringRegistryValueDto typedVal: value = typedVal.Value; kind = RegistryValueKind.String; break; case var val when val is ExpandableStringRegistryValueDto typedVal: value = typedVal.Value; kind = RegistryValueKind.ExpandString; break; case var val when val is BinaryRegistryValueDto typedVal: value = typedVal.Value; kind = RegistryValueKind.Binary; break; case var val when val is DWordRegistryValueDto typedVal: value = (int)typedVal.Value; kind = RegistryValueKind.DWord; break; case var val when val is QWordRegistryValueDto typedVal: value = (long)typedVal.Value; kind = RegistryValueKind.QWord; break; case var val when val is MultiStringRegistryValueDto typedVal: value = typedVal.Value; kind = RegistryValueKind.MultiString; break; default: throw new ArgumentOutOfRangeException(); } regKey.SetValue(valueDto.Name, value, kind); return(Ok()); } }
public static Task SetRegistryValue(string path, RegistryValueDto registryValue, ITargetedRestClient restClient) => CreateRequest(HttpVerb.Post, "subKeys/values", registryValue).AddQueryParam("path", path).Execute(restClient);