chiannet 发表于 2013-6-3 08:18:04

怎样判断当前windows启动方式?

本帖最后由 chiannet 于 2013-6-3 08:21 编辑

如何区分当前winndows运行在MBR分区还是GPT分区分区?
如何判断当前windows 启动模式:UEFI模式还是BIOS---->bootmgr---->BCD模式?


尽可能不借助MS之外的第三方工具。

糊涂 发表于 2013-6-3 08:55:11

本帖最后由 糊涂 于 2013-6-3 08:57 编辑

第一个问题简单



查看“磁盘列表”OK

第二个问题,我说不清楚

2011hiboy 发表于 2013-6-3 09:17:33

cmd-->diskpart--->list disk命令看磁盘属性

如果GPT字样下面有*标记的话,那就是UEFI启动。没有*标记的话,那就继续判断:

所有的分区里面都没有efi文件夹,就是MBR启动。

如果某个分区有efi文件夹,改名后能启动的100%是BIOS启动,改名后不能启动的100%是UEFI启动。

chiannet 发表于 2013-6-3 10:02:30

2011hiboy 发表于 2013-6-3 09:17 static/image/common/back.gif
cmd-->diskpart--->list disk命令看磁盘属性

如果GPT字样下面有*标记的话,那就是UEFI启动。没有*标记的 ...

晕,不太智能,不太科学。


尤其是

“如果某个分区有efi文件夹,改名后能启动的100%是BIOS启动,改名后不能启动的100%是UEFI启动。”

不太可能自动化实现。

chiannet 发表于 2013-6-3 10:05:00

看看是否还有更简便的可行的方案。

chiannet 发表于 2013-6-3 10:06:23

糊涂 发表于 2013-6-3 08:55 static/image/common/back.gif
第一个问题简单




有一定的可行性。但不便于自动化实现。

chiannet 发表于 2013-6-3 10:08:48

2011hiboy 发表于 2013-6-3 09:17 static/image/common/back.gif
cmd-->diskpart--->list disk命令看磁盘属性

如果GPT字样下面有*标记的话,那就是UEFI启动。没有*标记的 ...

cmd-->diskpart--->list disk命令看磁盘属性

如果GPT字样下面有*标记的话,那就是UEFI启动。

还要加入多硬盘的情况:例如一个MBR硬盘,一个GPT硬盘的情况。不是说不可以,但要自动化实现还是有些麻烦的。

ddianxing 发表于 2013-6-3 13:55:06

本帖最后由 ddianxing 于 2013-6-3 14:00 编辑

可以通过复制BCD来判断:正在使用的BCD是不能“复制粘贴”到其它地方的,如果EFI\Microsoft\boot\bcd文件不可以复制则说明是EFI模式;如果boo\bcd文件不能复制,则说明是BIOS模式。

chiannet 发表于 2013-6-3 14:36:02

ddianxing 发表于 2013-6-3 13:55 static/image/common/back.gif
可以通过复制BCD来判断:正在使用的BCD是不能“复制粘贴”到其它地方的,如果EFI\Microsoft\boot\bcd文件不 ...

这个法子来的简单,值得试试。谢谢。

chiannet 发表于 2013-6-3 14:45:10

ddianxing 发表于 2013-6-3 13:55 static/image/common/back.gif
可以通过复制BCD来判断:正在使用的BCD是不能“复制粘贴”到其它地方的,如果EFI\Microsoft\boot\bcd文件不 ...




检查copy命令的执行结果的确可判断。
前提是:世界上没有哪个变态佬,故意把bios--->bootmgr---->EFI\MICROSOFT\BOOT\BCD,这个法子基本就是最简单高效的了

fujianabc 发表于 2013-6-3 16:12:36

第二个问题不是n年前就讨论过了?我当时给出的方法很容易,楼上怎么都是一堆复杂的方法 ?
运行bcdedit /enum {current},其中path部分启动文件路径:bios启动的话是winload.exe,uefi启动的话是winload.efi

fujianabc 发表于 2013-6-3 16:16:14

本帖最后由 fujianabc 于 2013-6-3 16:22 编辑

2011hiboy 发表于 2013-6-3 09:17 static/image/common/back.gif
cmd-->diskpart--->list disk命令看磁盘属性

如果GPT字样下面有*标记的话,那就是UEFI启动。没有*标记的 ...

判断gpt和uefi事两码事。

GPT硬盘也可能是bios启动的(比如GPT/mbr混合分区表),mbr也可能是UEFI启动的。这个单硬盘判断比较容易,多硬盘就有些复杂了。不过很多情况下,GPT和mbr操作是相同的,并不需要预先判断

2011hiboy 发表于 2013-6-3 18:33:24

chiannet 发表于 2013-6-3 10:08 static/image/common/back.gif
还要加入多硬盘的情况:例如一个MBR硬盘,一个GPT硬盘的情况。不是说不可以,但要自动化实现还是有些 ...

你要仔细说明你的需要和目的,后来者才能斟酌回答。

2011hiboy 发表于 2013-6-3 18:36:55

本帖最后由 2011hiboy 于 2013-6-3 19:28 编辑

如果GPT字样下面有*标记的话,那就是UEFI启动。没有*标记的话,那就继续判断:

该磁盘就是GPT格式的磁盘,只能UEFI启动!

所有的分区里面都没有efi文件夹,就是MBR启动。

当磁盘不是GPT而是MBR的时候,没有efi文件夹,那么就是BIOS+MBR

如果某个分区有efi文件夹,改名后能启动的100%是BIOS启动,改名后不能启动的100%是UEFI启动。

当存在efi文件夹,改名后启动的说明efi文件夹无效属于BIOS+MBR;改名后不能启动就是UEFI+MBR

全部包含了BIOS+MBR;UEFI+GPT;UEFI+MBR 的情况;但是可能理解起来需要对启动有点了解。但是实现自动化困难。

2011hiboy 发表于 2013-6-3 19:52:43

楼主想要实现自动化,可以给出一点思路,首先diskpart可以判断出磁盘是MBR还是GPT,顺便磁盘格式是GPT的时候肯定是UEFI启动

当磁盘格式是MBR的时候,那就使用bcdedit命令看看winload.exe--BIOS   winload.efi--UEFI

copy判断或许可行,但不可靠。

糊涂 发表于 2013-6-3 23:14:26

貌似可以理解为:有EFI文件夹的未必是GPT分区,而没有EFI文件夹也未必一定是MBR分区;

2011hiboy 发表于 2013-6-5 08:27:01

糊涂 发表于 2013-6-3 23:14 http://bbs.wuyou.net/static/image/common/back.gif
貌似可以理解为:有EFI文件夹的未必是GPT分区,而没有EFI文件夹也未必一定是MBR分区;

UEFI---->必须有efi文件夹,磁盘可以是MBR/GPT
BIOS--->有没有efi文件夹,磁盘只能是是MBR

GPT--->必须有efi文件夹,仅支持UEFI引导
MBR--->支持UEFI引导的时候需要efi文件夹,支持BIOS引导需要引导记录。

没有efi文件夹的话,那肯定不是UEFI引导也不是GPT磁盘,只能是BIOS引导和MBR磁盘
(不考虑手动选择启动文件和其他特殊人为因素)



糊涂 发表于 2013-6-5 08:29:57

2011hiboy 发表于 2013-6-5 08:27 static/image/common/back.gif
UEFI---->必须有efi文件夹,磁盘可以是MBR/GPT
BIOS--->有没有efi文件夹,磁盘只能是是MBR



(不考虑手动选择启动文件和其他特殊人为因素)
最后一句才是关键!
对于未来,谁也无法评估揣测

buger 发表于 2013-6-5 10:26:33

本帖最后由 buger 于 2013-6-5 10:29 编辑

我目前在W8X64PE中使用的方法
bcdedit | find /i "efi"
if ErrorLevel 1 goto NOGPT
if ErrorLevel 0 goto GPT
这个只能判断当前PE是由UEFI方式启动且硬盘上的系统是基于GTP且系统分区存在的。

2012-PE 发表于 2013-6-5 10:42:07

如果在当前系统下判断:

CDM下,执行: mountvol.exe
UEFI启动,和BIOS启动,列出的参数不一样(BIOS启动,没有ESP相关参数) ,你一看,就知道.

MBR和GPT,看看磁盘管理就可以了

糊涂 发表于 2013-6-5 11:33:56

其实目前UEFI+GPT、UEFI+MBR、BIOS+GPT、BIOS+MBR、、、这些环境根本没有定义性的界限
许多都会由“人为因素”直接或间接的达到某种使用环境,以适应用户的需要!

今天是这样,明天可能想怎么样就怎么样

四海皆狂龙 发表于 2014-4-29 18:58:44

我的疑问是,无论是安装还是恢复系统,又如何知道或需要,到底是选择uefi 还是bios,如果不知道,那么就只能留给用户去选择了,那么智能化从何谈起。

ljycslg 发表于 2014-4-29 19:33:56

系统 :
1.用msinfo32看


2.脚本的话得通过系统api检测
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724325(v=vs.85).aspx

pe:
看注册表HKLM\System\CurrentControlSet\Control /v PEFirmwareType的值

0x1位bios0x2为UEFI

devilma 发表于 2014-4-29 20:34:24

fujianabc 发表于 2013-6-3 16:12
第二个问题不是n年前就讨论过了?我当时给出的方法很容易,楼上怎么都是一堆复杂的方法 ?
运行bcdedit /e ...

这个应该是可行的。。。。而且也简单。。。

2012hsj17 发表于 2014-5-1 19:41:12

我觉得还是看bcd里面是引导winload.exe还是winload.efi最准吧。要不然双启动的电脑不就哭了?

2012hsj17 发表于 2014-5-1 19:42:08

糊涂 发表于 2013-6-5 11:33
其实目前UEFI+GPT、UEFI+MBR、BIOS+GPT、BIOS+MBR、、、这些环境根本没有定义性的界限
许多都会由“人为因 ...

BIOS+GPT怎么引导?

FRIENDTASY 发表于 2014-10-28 00:17:40

fujianabc 发表于 2013-6-3 16:12
第二个问题不是n年前就讨论过了?我当时给出的方法很容易,楼上怎么都是一堆复杂的方法 ?
运行bcdedit /e ...

虚拟机,单硬盘,GPT,只有一个NTFS分区,无其它剩余空间,bcdedit 结果居然是winload.exe,系统区无EFI文件夹,gpt.mbr.uefi傻傻分不清了~~~~~~~~~~~~~~~

彩印厂 发表于 2014-12-27 19:08:06

你先用DiskGenius软件检查一下硬盘格式是Mbr还是GPT。如果硬盘格式是GTP的一般是UEFI启动(或者是UEFI+BIOS启动);硬盘格式是Mbr,是传统BIOS启动。
页: [1]
查看完整版本: 怎样判断当前windows启动方式?