rust初体验:使用rust修改windows10注册表(一)

前言

    作为一个Rust新手,我在官网学习相关知识后动手实践Demo项目,期望通过互相交流学习共同进步,若有任何问题,还请大家不吝赐教。

一、Cargo.toml

[package]
name = "ytdxwinreg"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
winreg = "0.52"

二、main.rs

use std::io;
use winreg::enums::HKEY_CLASSES_ROOT;
use winreg::RegKey;
fn main() -> io::Result<()> {
    let is_has_ytdx_key = RegKey::predef(HKEY_CLASSES_ROOT)
        .enum_keys()
        .map(|x| x.unwrap())
        .filter(|x| x.starts_with("."))
        .any(|s| s.contains(".ytdx"));
    if is_has_ytdx_key {
        println!("reg keys contains '.ytdx'");
    } else {
        let hkcr = RegKey::predef(HKEY_CLASSES_ROOT);
        let (ytdx, _) = hkcr.create_subkey(&format!(".ytdx")).expect("failed");
        ytdx.set_value("", &format!("ytdx_file")).expect("failed");
        let (ytdx_file, _) = hkcr.create_subkey(&format!("ytdx_file")).expect("failed");
        let (ytdx_file_defaulticon, _) = ytdx_file
            .create_subkey(&format!("DefaultIcon"))
            .expect("failed");
        ytdx_file_defaulticon
            .set_value(
                "",
                &format!(r#"D:\worker\wiring-diagram-editor-ui\src-tauri\icons\128x128.png"#),
            )
            .expect("failed");
        let (ytdx_file_shell_open_command, _) = ytdx_file
            .create_subkey(&format!("shell\\open\\command"))
            .expect("failed");
        ytdx_file_shell_open_command
            .set_value(
                "",
                &format!(
                    r#"D:\worker\wiring-diagram-editor-ui\src-tauri\target\debug\云图.exe "%1""#
                ),
            )
            .expect("failed");
    }
    Ok(())
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值