use windows::Win32::System::Registry::*;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Hive {
ClassesRoot,
CurrentUser,
LocalMachine,
Users,
CurrentConfig,
}
impl Hive {
pub(crate) fn as_hkey(&self) -> HKEY {
match self {
Hive::ClassesRoot => HKEY_CLASSES_ROOT,
Hive::CurrentUser => HKEY_CURRENT_USER,
Hive::LocalMachine => HKEY_LOCAL_MACHINE,
Hive::Users => HKEY_USERS,
Hive::CurrentConfig => HKEY_CURRENT_CONFIG,
}
}
pub(crate) fn as_short_name(&self) -> &'static str {
match self {
Hive::ClassesRoot => "HKCR",
Hive::CurrentUser => "HKCU",
Hive::LocalMachine => "HKLM",
Hive::Users => "HKU",
Hive::CurrentConfig => "HKCC",
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Access {
Read,
Write,
ReadWrite,
AllAccess,
}
impl Access {
pub(crate) fn to_sam_flags(self) -> u32 {
match self {
Access::Read => KEY_READ.0,
Access::Write => KEY_WRITE.0,
Access::ReadWrite => KEY_READ.0 | KEY_WRITE.0,
Access::AllAccess => KEY_ALL_ACCESS.0,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub(crate) enum Wow64View {
Key32,
Key64,
}
impl Wow64View {
pub(crate) fn to_sam_flags(self) -> u32 {
match self {
Wow64View::Key32 => 0x0200, Wow64View::Key64 => 0x0100, }
}
}