无忧启动论坛

标题: 如何判断PE是以UEFI还是BIOS方式启动 [打印本页]

作者: thtf    时间: 2016-5-3 21:48
标题: 如何判断PE是以UEFI还是BIOS方式启动
本帖最后由 thtf 于 2016-5-17 20:28 编辑

在PE下运行一个程序,想判断当前PE是以哪种方式启动的,注意是用U盘或移动硬盘启动的支持BIOS和UEFI双启动的PE启动的系统,就想判断当前启动的PE的启动方式。
1、论坛里有用bcdedit /enum {cerrent} 这个方法不行,它检测的应该是硬盘上的,我以UEFI启动PE后,运行显示错误(当时硬盘模式为MBR),如果GPT我想就可以了。
2、用msinfo32查看,没用过,PE里运行不来,也不适合自动处理。
3、识别最准的是P大的bootice,如果当前PE是以UEFI启动的,就会出现UEFI选项,反之则没有。

肯请各位老大百忙之中回答一下,或提供个思路,谢谢了!

按2楼大师的提示,已经成功了。
运行完wpeutil /UpdateBootInfo    就可以查询注册表了。
作者: ljycslg    时间: 2016-5-3 21:56
https://msdn.microsoft.com/zh-cn ... dware/dn293283.aspx
作者: thtf    时间: 2016-5-3 21:59
ljycslg 发表于 2016-5-3 21:56
https://msdn.microsoft.com/zh-cn/library/windows/hardware/dn293283.aspx

谢谢大元帅回答,正在研究,先谢谢。
作者: thtf    时间: 2016-5-3 21:59
ljycslg 发表于 2016-5-3 21:56
https://msdn.microsoft.com/zh-cn/library/windows/hardware/dn293283.aspx

谢谢大元帅回答,正在研究,先谢谢。
作者: thtf    时间: 2016-5-3 21:59
ljycslg 发表于 2016-5-3 21:56
https://msdn.microsoft.com/zh-cn/library/windows/hardware/dn293283.aspx

谢谢大元帅回答,正在研究,先谢谢。
作者: wylgogogo    时间: 2016-5-3 23:12
这东西不是默认uefi吗。出发自己设置bios吗。
作者: 红毛樱木    时间: 2016-5-4 01:10
ljycslg 发表于 2016-5-3 21:56
https://msdn.microsoft.com/zh-cn/library/windows/hardware/dn293283.aspx

这个在精简版的pe下可能不行,不知道bootice用的是哪个API?
作者: lsc1117    时间: 2016-5-4 06:19
Bootice就可以了
作者: 2012hzy6420    时间: 2016-5-4 07:06
谢谢分享
作者: zengqcyxx    时间: 2016-5-7 02:45
本论坛WINLY启动能智能分析硬件是bios还是EFI启动调用相应的启动项。
作者: qingdao33122    时间: 2016-5-7 05:27
GetFirmwareType function

Retrieves the firmware type of the local computer.

Syntax

BOOL WINAPI GetFirmwareType(
  _Inout_ PFIRMWARE_TYPE FirmwareType
);

Parameters
FirmwareType [in, out]
A pointer to a FIRMWARE_TYPE enumeration.

Return value

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call the GetLastError function.

Requirements
Minimum supported client           Windows 8 [desktop apps only]
Minimum supported server          Windows Server 2012 [desktop apps only]
Header                                     Winbase.h (include Windows.h)
Library                                      Kernel32.lib
DLL                                           Kernel32.dll

typedef enum _FIRMWARE_TYPE {
  FirmwareTypeUnknown  = 0,
  FirmwareTypeBios     = 1,
  FirmwareTypeUefi     = 2,
  FirmwareTypeMax      = 3
} FIRMWARE_TYPE, *PFIRMWARE_TYPE;
作者: qingdao33122    时间: 2016-5-7 05:40
For Windows 7/Server 2008R2 and above, the GetFirmwareEnvironmentVariable Win32 API (designed to extract firmware environment variables) can be used.  This API is not supported on non-UEFI firmware and will fail in a predictable way when called - this will identify a legacy BIOS.  On UEFI firmware, the API can be called with dummy parameters, and while it will still fail (probably!) the resulting error code will be different from the legacy BIOS case.

For Windows 8/Server 2012 and above there's a more elegant solution in the form of the GetFirmwareType() API.  This returns an enum (integer) indicating the underlying firmware type.
作者: yfwang0798    时间: 2016-5-11 21:54
发现上次的批处理有问题,重新上传

check_pe_boot_mode.7z

371 Bytes, 下载次数: 88, 下载积分: 无忧币 -2


作者: 台风12    时间: 2016-8-19 23:42
正有此问,解决了难题
作者: baosheng00    时间: 2016-8-20 02:04
本帖最后由 baosheng00 于 2016-8-22 00:13 编辑

给楼主一个程序吧,UEIF启动没有测试,手头没有这机器。程序20秒没有点击确定按钮自动退出,需要PE才可以运行噢!
看图吧,我测试三个PE











下载2.0的版本(支持2000~win10PE)

MBRUEFI.rar

366 KB, 下载次数: 111, 下载积分: 无忧币 -2


作者: suoguo88    时间: 2016-8-21 20:52
这是什么情况?

作者: baosheng00    时间: 2016-8-21 21:58
本帖最后由 baosheng00 于 2016-8-21 22:01 编辑
suoguo88 发表于 2016-8-21 20:52
这是什么情况?


手头上没有,win7pe,所以没有加支持。只支持xp,03,win8,win10PE。其它都显示无法识别。
win7 pe都是BIOS启动。

需要我再调整

作者: baosheng00    时间: 2016-8-22 00:05
本帖最后由 baosheng00 于 2016-8-22 00:12 编辑
suoguo88 发表于 2016-8-21 20:52
这是什么情况?


2.0版本所有PE系统都支持(只要程序可运行)
作者: zengqcyxx    时间: 2016-8-25 06:57
UEFI加载的BCD与BIOS加载的BCD不是同一个文件,一个加个U,一个加个B启动时就能区分了,另外在PE里运行DISM++就能看到了。
作者: 虫子樱桃    时间: 2016-8-25 15:47
api即可
作者: cbl    时间: 2020-3-2 19:20

作者: xyg888    时间: 2020-3-2 22:12
好久没更新PE了,学习中!!!
作者: ppppnnnn    时间: 2020-10-10 19:14
试试看,好久没找到这个文件
作者: 小辉数码    时间: 2023-1-31 09:53
感谢分享,最近想用AU3写一个,还没有找到头绪,学习学习。
作者: say    时间: 2023-1-31 10:19
前面写的有uefi




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3