| 29 | } |
| 30 | |
| 31 | pub fn config_get(config: &Registry) -> Result<String, RegistryError> { |
| 32 | let mut reg_result = Registry { key_path: config.key_path.clone(), ..Default::default() }; |
| 33 | |
| 34 | let reg_key = match RegistryKey::new(config.key_path.as_str()) { |
| 35 | Ok(reg_key) => reg_key, |
| 36 | Err(NtStatusError { status: NtStatusErrorKind::ObjectNameNotFound, ..}) => { |
| 37 | reg_result.exist = Some(false); |
| 38 | match serde_json::to_string(®_result) { |
| 39 | Ok(reg_json) => { |
| 40 | return Ok(reg_json); |
| 41 | }, |
| 42 | Err(err) => { |
| 43 | return Err(RegistryError::Json(err.to_string())); |
| 44 | } |
| 45 | } |
| 46 | } |
| 47 | Err(err) => { |
| 48 | return Err(RegistryError::NtStatus(err)); |
| 49 | } |
| 50 | }; |
| 51 | |
| 52 | if config.value_name.is_some() { |
| 53 | let reg_value = match reg_key.get_value(config.value_name.as_ref().unwrap().as_str()) { |
| 54 | Ok(reg_value) => reg_value, |
| 55 | Err(err) => { |
| 56 | return Err(RegistryError::NtStatus(err)); |
| 57 | } |
| 58 | }; |
| 59 | |
| 60 | reg_result.value_name = Some(reg_value.name); |
| 61 | reg_result.value_data = Some(convert_ntreg_data(®_value.data)?); |
| 62 | } |
| 63 | |
| 64 | match serde_json::to_string(®_result) { |
| 65 | Ok(reg_json) => { |
| 66 | Ok(reg_json) |
| 67 | }, |
| 68 | Err(err) => { |
| 69 | Err(RegistryError::Json(err.to_string())) |
| 70 | } |
| 71 | } |
| 72 | } |
| 73 | |
| 74 | pub fn config_set(config: &Registry) -> Result<String, RegistryError> { |
| 75 | let mut reg_result = Registry { key_path: config.key_path.clone(), ..Default::default() }; |