summaryrefslogtreecommitdiffstats
path: root/third_party/rust/winreg/examples/load_app_key.rs
blob: 2340c82b591f5a607090788073117fa7b1a47d86 (plain)
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
// Copyright 2021, Igor Shaula
// Licensed under the MIT License <LICENSE or
// http://opensource.org/licenses/MIT>. This file
// may not be copied, modified, or distributed
// except according to those terms.
extern crate winreg;
use std::io;
use winreg::enums::*;
use winreg::RegKey;

fn main() -> io::Result<()> {
    {
        // put this in a block so app_key_1 gets out of scope and doesn't prevent us
        // from loading the key again later
        let app_key_1 = RegKey::load_app_key("myhive.dat", true)?;
        app_key_1.set_value("answer", &42u32)?;
    }
    let answer: u32 = {
        // NOTE: on Windows 7 this fails with ERROR_ALREADY_EXISTS
        let app_key_2 =
            RegKey::load_app_key_with_flags("myhive.dat", KEY_READ, REG_PROCESS_APPKEY)?;
        app_key_2.get_value("answer")?
    };
    println!("The Answer is {}", answer);
    Ok(())
}