当前位置:首页|资讯

一些零零碎碎的小技术(一)- 判断当前Windows操作系统是否为WinPE

作者:零分的考卷发布时间:2024-09-16

介绍

本文将介绍一些笔者在开发“AZPEP SysRi Tool v2”中所使用到的一些小型技术,其大多与“Windows NT”内核打交道,希望本专栏对您的开发工作有所帮助。

判断当前Windows操作系统是否为WinPE

根据“https://learn.microsoft.com/zh-cn/windows-hardware/manufacture/desktop/whats-new-in-windows-pe-s14”中的介绍,我们注意到,在WinPE的注册表内存在一个项:“https://learn.microsoft.com/zh-cn/windows-hardware/manufacture/desktop/whats-new-in-windows-pe-s14”,此项存放着WinPE的内核版本信息。

但更为重要的是:此注册表项为WinPE独有,非WinPE的Windows系统不具有此注册表项,所以我们可以将此注册表项是否存在作为判断当前Windows操作系统是否为WinPE。


“Microsoft Learn”中提到的检查WinPE版本的方法,来源:https://learn.microsoft.com/zh-cn/windows-hardware/manufacture/desktop/whats-new-in-windows-pe-s14
笔者Win11电脑的“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion”下的注册表项,可以看到,该项下并无“WinPE”项
使用“Windows ADK”制作的“Win11 PE”的“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion”下的注册表项,可以看到,该项下有“WinPE”项,并且在项的"Version"键中存有该PE的WinNT内核版本


理论存在,实践开始

由于WinPE没有CRT(C/C++ 运行时),我们需要让编译器在程序编译后将CRT复制到程序目录
最终生成的文件
Win11下测试的结果
“Win11 PE”下测试结果



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1