game-scanner 1.0.5

Game Scanner for any launcher and OS
use crate::error::{Error, ErrorKind, Result};
use std::env;
use winreg;

pub fn get_local_machine_reg_key(sub_key: &str) -> Result<winreg::RegKey> {
    let reg = winreg::RegKey::predef(winreg::enums::HKEY_LOCAL_MACHINE);

    let key = match env::consts::ARCH {
        "x86_64" => String::from("SOFTWARE\\WOW6432Node\\") + sub_key,
        _ => String::from("SOFTWARE\\") + sub_key,
    };

    return reg
        .open_subkey(key)
        .map_err(|error| Error::new(ErrorKind::WinReg, error));
}

pub fn get_current_user_reg_key(sub_key: &str) -> Result<winreg::RegKey> {
    let reg = winreg::RegKey::predef(winreg::enums::HKEY_CURRENT_USER);

    let key = match env::consts::ARCH {
        "x86_64" => String::from("SOFTWARE\\") + sub_key,
        _ => String::from("SOFTWARE\\") + sub_key,
    };

    return reg
        .open_subkey(key)
        .map_err(|error| Error::new(ErrorKind::WinReg, error));
}

pub fn get_sub_key(reg: &winreg::RegKey, key: &str) -> Result<winreg::RegKey> {
    return reg
        .open_subkey(key)
        .map_err(|error| Error::new(ErrorKind::WinReg, error));
}

pub fn get_value(reg: &winreg::RegKey, key: &str) -> Result<String> {
    return reg
        .get_value::<String, &str>(key)
        .map_err(|error| Error::new(ErrorKind::WinReg, error));
}