Struct winreg::RegKey 
                   
                       [−]
                   
               [src]
pub struct RegKey {
    // some fields omitted
}Handle of opened registry key
Methods
impl RegKey[src]
fn predef(hkey: HKEY) -> RegKey
Open one of predefined keys:
- HKEY_CLASSES_ROOT
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
- HKEY_USERS
- HKEY_PERFORMANCE_DATA
- HKEY_PERFORMANCE_TEXT
- HKEY_PERFORMANCE_NLSTEXT
- HKEY_CURRENT_CONFIG
- HKEY_DYN_DATA
- HKEY_CURRENT_USER_LOCAL_SETTINGS
Examples
let hklm = RegKey::predef(HKEY_LOCAL_MACHINE);
fn open_subkey<P: AsRef<OsStr>>(&self, path: P) -> Result<RegKey>
Open subkey with KEY_ALL_ACCESS permissions.
Will open another handle to itself if path is an empty string.
To open with different permissions use open_subkey_with_flags.
Examples
let soft = RegKey::predef(HKEY_CURRENT_USER) .open_subkey("Software").unwrap();
fn open_subkey_with_flags<P: AsRef<OsStr>>(&self, path: P, perms: REGSAM) -> Result<RegKey>
Open subkey with desired permissions.
Will open another handle to itself if path is an empty string.
Examples
let hklm = RegKey::predef(HKEY_LOCAL_MACHINE); hklm.open_subkey_with_flags("SOFTWARE\\Microsoft", KEY_READ).unwrap();
fn open_subkey_transacted<P: AsRef<OsStr>>(&self, path: P, t: &Transaction) -> Result<RegKey>
Part of transactions feature.
fn open_subkey_transacted_with_flags<P: AsRef<OsStr>>(&self, path: P, t: &Transaction, perms: REGSAM) -> Result<RegKey>
Part of transactions feature.
fn create_subkey<P: AsRef<OsStr>>(&self, path: P) -> Result<RegKey>
Create subkey (and all missing parent keys)
and open it with KEY_ALL_ACCESS permissions.
Will just open key if it already exists.
Will open another handle to itself if path is an empty string.
To create with different permissions use create_subkey_with_flags.
Examples
let hkcu = RegKey::predef(HKEY_CURRENT_USER); let settings = hkcu.create_subkey("Software\\MyProduct\\Settings").unwrap();
fn create_subkey_with_flags<P: AsRef<OsStr>>(&self, path: P, perms: REGSAM) -> Result<RegKey>
fn create_subkey_transacted<P: AsRef<OsStr>>(&self, path: P, t: &Transaction) -> Result<RegKey>
Part of transactions feature.
fn create_subkey_transacted_with_flags<P: AsRef<OsStr>>(&self, path: P, t: &Transaction, perms: REGSAM) -> Result<RegKey>
Part of transactions feature.
fn copy_tree<P: AsRef<OsStr>>(&self, path: P, dest: &RegKey) -> Result<()>
Copy all the values and subkeys from path to dest key.
WIll copy the content of self if path is an empty string.
Examples
let hkcu = RegKey::predef(HKEY_CURRENT_USER); let src = hkcu.open_subkey_with_flags("Software\\MyProduct", KEY_READ).unwrap(); let dst = hkcu.create_subkey("Software\\MyProduct\\Section2").unwrap(); src.copy_tree("Section1", &dst).unwrap();
fn query_info(&self) -> Result<RegKeyMetadata>
fn enum_keys(&self) -> EnumKeys
Return an iterator over subkeys names.
Examples
println!("File extensions, registered in this system:"); for i in RegKey::predef(HKEY_CLASSES_ROOT) .enum_keys().map(|x| x.unwrap()) .filter(|x| x.starts_with(".")) { println!("{}", i); }
fn enum_values(&self) -> EnumValues
Return an iterator over values.
Examples
let system = RegKey::predef(HKEY_LOCAL_MACHINE) .open_subkey_with_flags("HARDWARE\\DESCRIPTION\\System", KEY_READ) .unwrap(); for (name, value) in system.enum_values().map(|x| x.unwrap()) { println!("{} = {:?}", name, value); }
fn delete_subkey<P: AsRef<OsStr>>(&self, path: P) -> Result<()>
Delete key. Cannot delete if it has subkeys.
Will delete itself if path is an empty string.
Use delete_subkey_all for that.
Examples
RegKey::predef(HKEY_CURRENT_USER) .delete_subkey(r"Software\MyProduct\History").unwrap();
fn delete_subkey_transacted<P: AsRef<OsStr>>(&self, path: P, t: &Transaction) -> Result<()>
Part of transactions feature.
fn delete_subkey_all<P: AsRef<OsStr>>(&self, path: P) -> Result<()>
Recursively delete subkey with all its subkeys and values.
Will delete itself if path is an empty string.
Examples
RegKey::predef(HKEY_CURRENT_USER) .delete_subkey_all("Software\\MyProduct").unwrap();
fn get_value<T: FromRegValue, N: AsRef<OsStr>>(&self, name: N) -> Result<T>
Get a value from registry and seamlessly convert it to the specified rust type
with FromRegValue implemented (currently String, u32 and u64).
Will get the Default value if name is an empty string.
Examples
let settings = hkcu.open_subkey("Software\\MyProduct\\Settings").unwrap(); let server: String = settings.get_value("server").unwrap(); let port: u32 = settings.get_value("port").unwrap();
fn get_raw_value<N: AsRef<OsStr>>(&self, name: N) -> Result<RegValue>
Get raw bytes from registry value.
Will get the Default value if name is an empty string.
Examples
let settings = hkcu.open_subkey("Software\\MyProduct\\Settings").unwrap(); let data = settings.get_raw_value("data").unwrap(); println!("Bytes: {:?}", data.bytes);
fn set_value<T: ToRegValue, N: AsRef<OsStr>>(&self, name: N, value: &T) -> Result<()>
Seamlessly convert a value from a rust type and write it to the registry value
with ToRegValue trait implemented (currently String, &str, u32 and u64).
Will set the Default value if name is an empty string.
Examples
let settings = hkcu.create_subkey("Software\\MyProduct\\Settings").unwrap(); settings.set_value("server", &"www.example.com").unwrap(); settings.set_value("port", &8080u32).unwrap();
fn set_raw_value<N: AsRef<OsStr>>(&self, name: N, value: &RegValue) -> Result<()>
Write raw bytes from RegValue struct to a registry value.
Will set the Default value if name is an empty string.
Examples
use winreg::{RegKey, RegValue}; use winreg::enums::*; let hkcu = RegKey::predef(HKEY_CURRENT_USER); let settings = hkcu.open_subkey("Software\\MyProduct\\Settings").unwrap(); let bytes: Vec<u8> = vec![1, 2, 3, 5, 8, 13, 21, 34, 55, 89]; let data = RegValue{ vtype: REG_BINARY, bytes: bytes}; settings.set_raw_value("data", &data).unwrap(); println!("Bytes: {:?}", data.bytes)
fn delete_value<N: AsRef<OsStr>>(&self, name: N) -> Result<()>
Delete specified value from registry.
Will delete the Default value if name is an empty string.
Examples
let settings = hkcu.open_subkey("Software\\MyProduct\\Settings").unwrap(); settings.delete_value("data").unwrap();
fn encode<T: Encodable>(&self, value: &T) -> EncodeResult<()>
Save Encodable type to a registry key.
Part of serialization-rustc feature.
Examples
extern crate rustc_serialize; extern crate winreg; use winreg::RegKey; use winreg::enums::*; use rustc_serialize::Encodable; #[derive(RustcEncodable)] struct Rectangle{ x: u32, y: u32, w: u32, h: u32, } #[derive(RustcEncodable)] struct Settings{ current_dir: String, window_pos: Rectangle, show_in_tray: bool, } let s: Settings = Settings{ current_dir: "C:\\".to_owned(), window_pos: Rectangle{ x:200, y: 100, w: 800, h: 500 }, show_in_tray: false, }; let s_key = RegKey::predef(HKEY_CURRENT_USER) .open_subkey("Software\\MyProduct\\Settings").unwrap(); s_key.encode(&s).unwrap();
fn decode<T: Decodable>(&self) -> DecodeResult<T>
Load Decodable type from a registry key.
Part of serialization-rustc feature.
Examples
extern crate rustc_serialize; extern crate winreg; use winreg::RegKey; use winreg::enums::*; use rustc_serialize::Decodable; #[derive(RustcDecodable)] struct Rectangle{ x: u32, y: u32, w: u32, h: u32, } #[derive(RustcDecodable)] struct Settings{ current_dir: String, window_pos: Rectangle, show_in_tray: bool, } let s_key = RegKey::predef(HKEY_CURRENT_USER) .open_subkey("Software\\MyProduct\\Settings").unwrap(); let s: Settings = s_key.decode().unwrap();