#windows #query #wmi #winapi #com

query-wmi

用于查询Windows OS中WMI类的crate

1 个稳定版本

1.1.3 2023年2月21日
1.0.0 2023年2月20日

#94 in Windows API

AGPL-3.0-only

35KB
281

query_wmi

Rust Crates.io docs.rs

用于查询Windows中WMI类的crate

https://learn.microsoft.com/en-us/windows/win32/wmisdk/wmi-start-page

Windows管理规范(WMI)是Windows基于操作系统的管理数据和操作的基础设施。您可以通过编写WMI脚本或应用程序来自动化远程计算机上的管理任务,但WMI还向操作系统的其他部分和产品提供管理数据——例如,系统中心操作管理器(以前称为Microsoft Operations Manager (MOM)),或Windows远程管理(WinRM)。用法

use query_wmi::{COMLibrary, Variant, WMIConnection};
use query_wmi::computer_hardware::{
    get_Win32_CDROMDrive, get_Win32_ComputerSystem,
    get_Win32_PCMCIAController, get_Win32_PnPEntity, get_Win32_Processor,
    get_Win32_SystemEnclosure, get_Win32_TapeDrive, get_Win32_USBHub,
};
use query_wmi::operating_systems::get_Win32_OperatingSystem;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let com_con = COMLibrary::new()?;
    dbg!(get_Win32_OperatingSystem(com_con)?);
    dbg!(get_Win32_CDROMDrive(com_con)?);
    dbg!(get_Win32_ComputerSystem(com_con)?);
    dbg!(get_Win32_PCMCIAController(com_con)?);
    dbg!(get_Win32_PnPEntity(com_con)?);
    dbg!(get_Win32_Processor(com_con)?);
    dbg!(get_Win32_SystemEnclosure(com_con)?);
    dbg!(get_Win32_USBHub(com_con)?);
    dbg!(get_Win32_TapeDrive(com_con)?);
    Ok(())
}

返回类型

类型 查询 = Vec<HashMap<String, Variant>>.

String 是返回结构体字段的名称,Variant 是枚举类型。

目前包含的查询

子部分是根据 WMI脚本项目和应用程序的任务 定义的,您可以在 这里 找到更多类。

账户和域

计算机硬件

计算机软件

日期和时间

桌面管理

磁盘和文件系统

事件日志

文件和文件夹

网络

操作系统

性能监控

进程

打印机和打印

注册表

计划任务

服务

构建自己的类查询

您可以使用提供的 wmi 宏来创建自己的查询

#![allow(non_snake_case)]

use query_wmi::wmi;
use query_wmi::Query;
use paste::paste;
use std::collections::HashMap;
use query_wmi::COMLibrary;
use query_wmi::{Variant, WMIConnection};

// this creates the function `get_CLASS_NAME()`
wmi! {
    /// Documentation
    CLASS_NAME, r"path_to_namespace"
}

// calling it
let com_con = COMLibrary::new() ?;
dbg!(get_CLASS_NAME(com_con)?);

构建自己的查询

您也可以将 CLASS_NAME 替换为类似下面的查询:CLASS_NAME where SOME_CONDITION=VALUE

查看 WQL 运算符

依赖关系

~0–6MB
~15K SLoC