Deletes a sub key. # Arguments `recurse` - A boolean indicating if the sub key should be deleted recursively. If this is false and the sub key has sub keys, the deletion will fail. # Examples ``` # use ntreg::registry_key::*; let key = RegistryKey::new("HKCU").unwrap(); let new_key = key.create_key("NewKey"); assert!(new_key.is_ok()); new_key.unwrap().delete(true); ```
(&self, recurse: bool)
| 205 | /// new_key.unwrap().delete(true); |
| 206 | /// ``` |
| 207 | pub fn delete(&self, recurse: bool) -> Result<(), NtStatusError> { |
| 208 | let key = match open_key(&self.path.clone(), KEY_ALL_ACCESS) { |
| 209 | Ok((key, _)) => key, |
| 210 | Err(err) => return Err(err), |
| 211 | }; |
| 212 | |
| 213 | if recurse { |
| 214 | let mykey = match RegistryKey::new(&self.path) { |
| 215 | Ok(key) => key, |
| 216 | Err(err) => return Err(err), |
| 217 | }; |
| 218 | |
| 219 | for subkey in mykey.subkeys() { |
| 220 | subkey.delete(true)?; |
| 221 | } |
| 222 | } |
| 223 | |
| 224 | let status = unsafe { |
| 225 | ntregapi::NtDeleteKey(key) |
| 226 | }; |
| 227 | |
| 228 | if !NT_SUCCESS(status) { |
| 229 | return Err(NtStatusError::new(status, "Failed to delete key.")); |
| 230 | } |
| 231 | |
| 232 | Ok(()) |
| 233 | } |
| 234 | |
| 235 | /// Deletes a value for the current key. |
| 236 | /// |