wmi
WMI crate for rust.
0.18.4
4.7M downloads/mo
#4667 most downloaded on crates.io
ohadravid/wmi-rs
What this package is like to depend on
Last release 4 months ago
27 Mar 2026
Release timing varies
gaps range from 9 days to 5 months
Rarely documented
notes for 10 of 54 stable releases
1 version withdrawn
withdrawn after publishing
7 years old
55 releases · first in 2019
6 releases in the last 12 months
see the full history below
Release timeline
55 releases · Apr 2019 to Mar 2026Releases
latest 55-
0.18.427 Mar 2026Release notes
Open source →What's Changed
- Use
CoIncrementMTAUsagebehind atarget_vendorcfg to support win7 build by @Guiguiprim in #145
New Contributors
- @Guiguiprim made their first contribution in #145
Full Changelog: v0.18.3...v0.18.4
- Use
-
0.18.323 Feb 2026Release notes
Open source →What's Changed
- chore(deps): update criterion requirement from 0.7 to 0.8 by @dependabot[bot] in #139
- Add
set_proxy_blanketfor accessing namespaces that require elevated authentication levels by @delphifeel in #143
New Contributors
- @delphifeel made their first contribution in #143
Full Changelog: v0.18.2...v0.18.3
-
0.18.212 Feb 2026Release notes
Open source →What's Changed
- Add compatibility with multiple windows crate versions by @ohadravid in #144
Full Changelog: v0.18.1...v0.18.2
-
0.18.131 Jan 2026Release notes
Open source →What's Changed
- Added
WMIConnection::{put_instance,delete_instance}by @pronebird in #141
Full Changelog: v0.18.0...v0.18.1
- Added
-
0.18.001 Nov 2025Release notes
Open source →What's Changed
- Remove
COMLibraryand letWMIConnectioninitialize COM if needed by @ohadravid in #137
You can now callWMIConnection::new()and let the crate handle the initialization internally.
Note: COM will NOT be uninitialized when the connection is dropped (similar to <=0.17 versions, which didn't uninitialize COM on drop since #53).
If this is not what you want, then you must initialize COM yourself before creating the connection. See the docs for more. - Update the crate to Rust 2024 edition
Full Changelog: v0.17.3...v0.18.0
- Remove
-
0.17.304 Oct 2025Release notes
Open source →What's Changed
- chore(deps): update criterion requirement from 0.5 to 0.6 by @dependabot[bot] in #128
- Update CI images by @ohadravid in #135
- chore(deps): update windows requirement from 0.61 to 0.62 by @dependabot[bot] in #134
Full Changelog: v0.17.2...v0.17.3
-
0.17.207 May 2025 -
0.17.124 Apr 2025Release notes
Open source →What's Changed
- Support arrays of IUnknown pointers by @samin-cf in #125 and @ohadravid in #126
Full Changelog: v0.17.0...v0.17.1
-
0.17.019 Apr 2025Release notes
Open source →What's Changed
Breaking Changes
- Fixed conversions from Rust types to WMI types (so, only when used for method calling or using put_property), which were incorrect in a few cases (notably, u32s and u16s were not converted correctly), and added some missing conversions, in #124
SafeArrayAccessor::newnow accepts aNonNull<SAFEARRAY>instead of a reference, in #124
New Contributors
Full Changelog: v0.16.0...v0.17.0
-
0.16.014 Apr 2025Release notes
Open source →This version adds support for more serialization inputs (nested structures, array), and changes the public API to be more cohesive.
New Features
Nested structrure can be serialized when provided as method parameters (#120):
let in_params = CreateInput { CommandLine: "explorer.exe".to_string(), ProcessStartupInformation: Win32_ProcessStartup { PriorityClass: 128, // High priority. }, }; let out: CreateOutput = wmi_con .exec_class_method::<Win32_Process, _>("Create", in_params)?;
Arrays can be serialized when provided as method parameters (#121):
#[derive(Deserialize, Serialize)] struct SetBinaryValue { sSubKeyName: String, sValueName: String, uValue: Vec<u8>, } let test_value = vec![0, 1, 2, 3]; let set_binary_value_params = SetBinaryValue { // .. uValue: test_value, }; let value: SetBinaryValueOut = wmi_con .exec_class_method::<StdRegProv, _>("SetBinaryValue", &set_binary_value_params)?;
More lower-level API functions are exposed for
IWbemClassWrapper:let in_params = wmi_con .get_object("Win32_Process")? .get_method("Create")? .unwrap() // Can be `None`. .spawn_instance()?; in_params .put_property("CommandLine", "explorer.exe".to_string())?; let out = wmi_con .exec_method("Win32_Process", "Create", Some(&in_params))?;
Breaking Changes
- Method calling API was changed a little (#120):
// Before: let output: CreateOutput = wmi_con.exec_class_method::<Win32_Process, _, _>("Create", input)?; let output: PrinterOutput = wmi_con.exec_instance_method::<Win32_Printer, _, _>("Pause", &printer.__Path, ())?; // Now, only the Class and Out generics are named: let output: CreateOutput = wmi_con.exec_class_method::<Win32_Process, _>("Create", input)?; let output: PrinterOutput = wmi_con.exec_instance_method::<Win32_Printer, _>(&printer.__Path, "Pause", ())?;
- Rename lower-level (
_native) methods to match the original names (exec_method_native_wrapper->exec_method,exec_query_native_wrapper->exec_query, etc.) - Only expose as pub the needed structures and functions.
What's Changed
- Split method-calling logic between
IWbemClassWrapperandWMIConnection, rename lower-level functions by @ohadravid in #120 - Support Array Serialization by @ohadravid in #121
Full Changelog: v0.15.2...v0.16.0
-
0.15.229 Mar 2025Nothing published for this version
-
0.15.124 Feb 2025Nothing published for this version
-
0.15.029 Jan 2025Nothing published for this version
-
0.14.528 Jan 2025Nothing published for this version
-
0.14.418 Jan 2025Nothing published for this version
-
0.14.329 Dec 2024Nothing published for this version
-
0.14.204 Dec 2024Nothing published for this version
-
0.14.126 Nov 2024Nothing published for this version
-
0.14.009 Sep 2024Nothing published for this version
-
0.13.428 Aug 2024Nothing published for this version
-
0.13.327 Feb 2024Nothing published for this version
-
0.13.219 Jan 2024Nothing published for this version
-
0.13.102 Jun 2023Nothing published for this version
-
0.13.005 May 2023Nothing published for this version
-
0.12.201 Apr 2023Nothing published for this version
-
0.12.118 Mar 2023Nothing published for this version
-
0.12.028 Feb 2023Nothing published for this version
-
0.11.528 Feb 2023Nothing published for this version
-
0.11.402 Dec 2022Nothing published for this version
-
0.11.329 Sep 2022Nothing published for this version
-
0.11.203 Sep 2022Nothing published for this version
-
0.11.114 Aug 2022Nothing published for this version
-
0.11.015 Jul 2022Nothing published for this version
-
0.10.015 Jul 2022Nothing published for this version
-
0.9.313 Mar 2022Nothing published for this version
-
0.9.201 Nov 2021Nothing published for this version
-
0.9.110 Oct 2021Nothing published for this version
-
0.9.025 Jul 2021Nothing published for this version
-
0.8.108 Apr 2021Nothing published for this version
-
0.8.010 Mar 2021Nothing published for this version
-
0.7.007 Nov 2020Nothing published for this version
-
0.6.129 Oct 2020Nothing published for this version
-
0.6.014 Sep 2020Nothing published for this version
-
0.5.021 Jul 2020Nothing published for this version
-
0.4.617 Oct 2019Nothing published for this version
-
0.4.524 Sep 2019Nothing published for this version
-
0.4.411 Jun 2019Nothing published for this version
-
0.4.305 Jun 2019Nothing published for this version
-
0.4.204 Jun 2019Nothing published for this version
-
0.4.103 Jun 2019Nothing published for this version
-
0.4.003 Jun 2019Nothing published for this version
-
0.3.028 May 2019Nothing published for this version
-
0.2.026 May 2019Nothing published for this version
-
0.1.114 Apr 2019Nothing published for this version
-
0.1.014 Apr 2019 withdrawnNothing published for this version