rust - 读取windows注册表的值

本文提供了读取windows注册表值的方法。

读取字符串的值

rust 复制代码
#![cfg(windows)]
use anyhow::Result;
use windows::{core::*, Win32::System::Registry::*};

/// 查询windows注册表的值
fn query_reg_value() -> Result<String> {
    unsafe {
        // 打开注册表
        let mut key = HKEY::default();
        RegOpenKeyExA(
            HKEY_LOCAL_MACHINE,
            s!(r"SOFTWARE\GitForWindows"),
            0,
            KEY_QUERY_VALUE,
            &mut key,
        )?;

        // 获得 value 的字节数
        let mut len = 0;
        RegQueryValueExA(
            key,
            s!("InstallPath"),
            None,
            None,
            None,
            Some(&mut len),
        )?;

        // 获取 value 的值
        let mut buffer = vec![0u8; (len) as usize];
        RegQueryValueExA(
            key,
            s!("InstallPath"),
            None,
            None,
            Some(buffer.as_mut_ptr() as _),
            Some(&mut len),
        )?;

        // 转换为字符串
        let value = String::from_utf8_lossy(&buffer);

        // 去掉结尾的空字符
        let value = value.trim_end_matches("\0");

        Ok(value.to_string())
    }
}

#[test]
fn test_query_reg_value() {
    let actual = query_reg_value().unwrap();
    let expect = r"C:\Program Files\Git".to_string();
    assert_eq!(actual, expect);
}
相关推荐
superman超哥17 小时前
Serialize 与 Deserialize Trait:Rust 类型系统与序列化的完美融合
开发语言·rust·开发工具·编程语言·rust序列化·rust类型·serialize
南知意-17 小时前
仅 10MB 开源工具,一键远程唤醒关机电脑!
windows·开源·电脑·工具·远程开机
沛沛rh4517 小时前
Rust浮点数完全指南:从基础到实战避坑
深度学习·算法·计算机视觉·rust
呉師傅17 小时前
东芝复印机简单使用说明(2010AC等黑壳机)
运维·服务器·windows·电脑·wps
A懿轩A17 小时前
【2026 最新】Kuikly 编译开发 OpenHarmony 项目逐步详细教程带图操作Android Studio编译(Windows)
windows·harmonyos·鸿蒙·openharmony·kuikly
superman超哥18 小时前
Actix-web 性能优化技巧:从原理到实践
开发语言·rust·编程语言·actix-web
凯酱18 小时前
Java8 遍历List 使用stream().parallel()并发安全
数据结构·windows·list
superman超哥18 小时前
Rust 与数据库连接池的集成:从理论到生产实践
开发语言·rust·编程语言·rust与数据库连接池的集成
superman超哥19 小时前
序列化性能优化:从微秒到纳秒的极致追求
开发语言·rust·开发工具·编程语言·rust序列化性能优化·rust序列化
私人珍藏库1 天前
[Windows] 桌面整理 Desk Tidy v1.2.3
windows·工具·软件·win·多功能