1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use std::path::Path;
use registry::{Hive, RegKey, Security};
fn main() -> Result<(), std::io::Error> {
let hive_key = Hive::load_file(
Path::new(r"C:\Users\Default\NTUSER.DAT"),
Security::Read | Security::Write,
)
.unwrap();
walk_keys(hive_key, 0);
Ok(())
}
fn walk_keys(key: RegKey, tabstop: i32) {
for _ in 0..tabstop {
print!("\t");
}
println!("{}", key.to_string());
for subkey in key.keys() {
let subkey = subkey.unwrap().open(Security::Read).unwrap();
walk_keys(subkey, tabstop + 1);
}
}