无忧启动论坛

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

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

[复制链接]
跳转到指定楼层
1#
本帖最后由 窄口牛 于 2024-11-20 14:30 编辑







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








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

好的,原理我理解了。

回复

使用道具 举报

4#
发表于 4 天前 | 只看该作者
窄口牛 发表于 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]  详情 回复 发表于 4 天前
回复

使用道具 举报

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


点评

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

使用道具 举报

2#
发表于 4 天前 | 只看该作者
这个玩意应该是外网某个叫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
复制代码
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-24 04:18

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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