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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// Copyright 2019-2021 Colin Finck <colin@reactos.org>
// SPDX-License-Identifier: GPL-2.0-or-later

//! # nt-hive
//! The *nt-hive* Rust crate provides a comfortable and safe interface for accessing keys, values, and data stored in *hive* files.
//! Hive files can be found in `C:\Windows\system32\config` and store what is commonly called the *Windows registry*.
//! This crate supports the hive format that is used from Windows NT 4.0 up to the current Windows 10.
//!
//! # Getting started
//! 1. Create a [`Hive`] structure from hive data by calling [`Hive::new`].
//! 2. Retrieve the root [`KeyNode`] via [`Hive::root_key_node`].
//! 3. Move to a subkey via [`KeyNode::subkey`], [`KeyNode::subkeys`] or [`KeyNode::subpath`].
//! 4. Get an interesting value using [`KeyNode::value`] or [`KeyNode::values`].

#![cfg_attr(not(feature = "std"), no_std)]
#![forbid(unsafe_code)]

#[macro_use]
mod helpers;

mod big_data;
mod error;
mod hive;
mod index_root;
mod key_node;
mod key_value;
mod key_values_list;
mod leaf;
mod string;
mod subkeys_list;

pub use crate::big_data::*;
pub use crate::error::*;
pub use crate::hive::*;
pub use crate::index_root::*;
pub use crate::key_node::*;
pub use crate::key_value::*;
pub use crate::key_values_list::*;
pub use crate::leaf::*;
pub use crate::string::*;
pub use crate::subkeys_list::*;

#[cfg(feature = "alloc")]
extern crate alloc;