#os-version #version #nt #winapi #os #windows

no-std nt_version

高效查询Windows(NT)的主版本、次版本和构建版本

1 个不稳定版本

0.1.3 2020年1月1日
0.1.2 2019年12月7日
0.1.1 2019年12月7日
0.1.0 2019年12月7日

#178 in Windows APIs

Download history 6/week @ 2023-12-18 57/week @ 2023-12-25 65/week @ 2024-01-08 9/week @ 2024-02-19 17/week @ 2024-02-26 14/week @ 2024-03-04 6/week @ 2024-03-11 7/week @ 2024-03-18 37/week @ 2024-03-25

每月65 次下载

无版权

7KB

Build Status Crates.io Docs.rs License

nt_version

使用未记录的NTDLL函数高效查询Windows(NT)的主版本、次版本和构建版本。需要NT 5.1(Windows XP或更高版本)的最小版本。此crate为no_std。

nt_version = "0.1"

如果构建时出现链接器错误,您可能缺少系统中的ntdll.lib。它不包含在较旧版本的Windows SDK中,您需要安装DDK。

或者,启用回退功能,在运行时查询函数指针(但速度较慢)

nt_version = { version = "0.1", features = ["fallback"] }

用法

它只有一个函数:get,建议您显式使用它

fn main() {
    let (major, minor, build) = nt_version::get();
    println!("NT Version v{}.{}.{}", major, minor, build);
}

这返回NTDLL版本,它具有此编号系统

为什么?

Microsoft自Windows 8.1以来弃用了GetVersionEx,转而使用诸如"IsWindows8Point1OrGreater"之类的函数,现在没有真正的好方法来获取操作系统版本。如果您只想获取操作系统版本而不需要任何构建号,仍然可以使用来自lmwksta.hNetWkstaGetInfo,但这要慢得多,并分配了一个WKSTA_INFO_100块,您必须自己释放它,它包含诸如PC名称之类的多余信息,作为Windows宽字符串。不是非常理想。

依赖关系

~175KB