无忧启动论坛

标题: 判断efi或者legacy启动模式 (已解决) [打印本页]

作者: 窄口牛    时间: 3 天前
标题: 判断efi或者legacy启动模式 (已解决)
本帖最后由 窄口牛 于 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









作者: 2012win98se    时间: 3 天前
这个玩意应该是外网某个叫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 天前
执行报错,加上跳过错误语句可以执行,但判断并不对。
legacy.rar (2.68 KB, 下载次数: 4)
附上它所读的这个注册表。



作者: 2012win98se    时间: 3 天前
窄口牛 发表于 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)
作者: 窄口牛    时间: 3 天前
2012win98se 发表于 2024-11-20 12:38
报错的是第10行对吗?这一行正好就是检测是否有“RealModeIrqRoutingTable”文件夹,如果有就判定XP从ntl ...

好的,原理我理解了。






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