无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 842|回复: 10
打印 上一主题 下一主题

判断efi或者legacy启动模式 (已解决)

  [复制链接]
跳转到指定楼层
1#
发表于 2024-11-20 09:02:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 窄口牛 于 2024-11-26 08:44 编辑







REG Query HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\MultifunctionAdapter /f RealModeIrqRoutingTable /s >nul
IF %ERRORLEVEL% == 0 echo WinXP has been booted with ntldr
IF %ERRORLEVEL% == 1 echo WinXP has been booted with winload.efi orwinload.exe

已证实用bootmgr启动也会有这个注册表项









2#
发表于 2024-11-20 10:39:36 | 只看该作者
本帖最后由 2012win98se 于 2024-11-25 08:20 编辑

这个玩意应该是外网某个叫Beta12的人搞的,他现在的最新版脚本如下(改用VBS了):
  1. Const HKEY_LOCAL_MACHINE = &H80000002
  2. strComputer = "." ' Use . for current machine
  3. hDefKey     = HKEY_LOCAL_MACHINE
  4. strKeyPath  = "HARDWARE\DESCRIPTION\System\MultifunctionAdapter\"
  5. Set oReg    = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
  6. oReg.EnumKey hDefKey, strKeyPath, arrSubKeys

  7. For Each s In arrSubKeys

  8.         If oReg.EnumKey(hDefKey, strKeyPath & s & "\RealModeIrqRoutingTable", arrSubKeys) = 0 Then
  9.                 x = 1
  10.         End If

  11. Next

  12. If x = 1 Then
  13.         Call MsgBox("The RealModeIrqRoutingTable is present" & vbcrlf & "WinXP has been booted with ntldr",options,"Boot mode check")
  14. Else
  15.         Call MsgBox("No presence of the RealModeIrqRoutingTable" & vbcrlf & "WinXP has been booted with winload.efi or winload.exe",options,"Boot mode check")
  16. End If
复制代码
回复

使用道具 举报

3#
 楼主| 发表于 2024-11-20 11:01:21 | 只看该作者
执行报错,加上跳过错误语句可以执行,但判断并不对。
legacy.rar (2.68 KB, 下载次数: 11)
附上它所读的这个注册表。


点评

报错的是第10行对吗?这一行正好就是检测是否有“RealModeIrqRoutingTable”文件夹,如果有就判定XP从ntldr启动,如果没有就判定XP从winload.efi/winload.exe启动 你附上的注册表我也看过了,legacy.reg里有“Rea  详情 回复 发表于 2024-11-20 12:38
回复

使用道具 举报

4#
发表于 2024-11-20 12:38:47 | 只看该作者
窄口牛 发表于 2024-11-20 11:01
执行报错,加上跳过错误语句可以执行,但判断并不对。

附上它所读的这个注册表。

报错的是第10行对吗?这一行正好就是检测是否有“RealModeIrqRoutingTable”文件夹,如果有就判定XP从ntldr启动,如果没有就判定XP从winload.efi/winload.exe启动

你附上的注册表我也看过了,legacy.reg里有“RealModeIrqRoutingTable”文件夹,判定XP从ntldr启动;efi.reg里没有“RealModeIrqRoutingTable”文件夹,判定XP从winload.efi启动(排除winload.exe是因为只有Legacy启动模式才会使用,反之,EFI启动模式只会使用winload.efi)

点评

好的,原理我理解了。 [attachimg]550663[/attachimg]  详情 回复 发表于 2024-11-20 13:00
回复

使用道具 举报

5#
 楼主| 发表于 2024-11-20 13:00:30 | 只看该作者
2012win98se 发表于 2024-11-20 12:38
报错的是第10行对吗?这一行正好就是检测是否有“RealModeIrqRoutingTable”文件夹,如果有就判定XP从ntl ...

好的,原理我理解了。

点评

论坛系统居然把我的几个“\”弄没了难怪你的报错跟我的不一样,现在已修正 不过奇怪的是,在Windows XP x86 SP3上运行会出现第10行的错误(提示“Memory is locked”,意即“内存已锁定”),在Windows  详情 回复 发表于 2024-11-25 09:49
回复

使用道具 举报

6#
发表于 2024-11-25 09:49:37 | 只看该作者
窄口牛 发表于 2024-11-20 13:00
好的,原理我理解了。

论坛系统居然把我的几个“\”弄没了难怪你的报错跟我的不一样,现在已修正

不过奇怪的是,在Windows XP x86 SP3上运行会出现第10行的错误(提示“Memory is locked”,意即“内存已锁定”),在Windows XP x64 SP2上运行就正常
回复

使用道具 举报

7#
 楼主| 发表于 2024-11-25 13:58:57 来自手机 | 只看该作者
我在86w2k3,和64w2k3,都没问题。这就变得不是检测efi或者legacy了。
回复

使用道具 举报

8#
 楼主| 发表于 2024-11-26 08:40:40 | 只看该作者
本帖最后由 窄口牛 于 2024-11-26 08:44 编辑

是的,在xp下却是是酱紫的报错。并且批处理也报错,命令行参数过多。

回复

使用道具 举报

9#
发表于 2024-11-26 15:34:41 | 只看该作者
学习
回复

使用道具 举报

10#
发表于 6 天前 | 只看该作者
学习了!!!!
回复

使用道具 举报

11#
发表于 5 天前 | 只看该作者
mark 一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-12-4 01:30

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表