AU3判断windows系统是UEFI启动还是BIOS启动

admin AutoIt3评论15字数 937阅读模式

1.原理
在 Windows 系统中,可以通过检查系统的注册表来判断是 UEFI 还是 BIOS 启动。对于 UEFI 启动的系统,在注册表的HKLM\SYSTEM\CurrentControlSet\Control\SecureBoot\State键下会有相关的 UEFI 安全启动的配置信息;而 BIOS 启动的系统没有这个键。
2.使用 AutoIt(AU3)实现判断的步骤
首先,需要使用 AutoIt 的注册表操作函数来检查指定的注册表键是否存在。以下是一个简单的 AutoIt 脚本示例:

#NoTrayIcon
RegRead($hKey, $sValue)

; 检查UEFI安全启动相关的注册表键是否存在
$hKey = "HKLM\SYSTEM\CurrentControlSet\Control\SecureBoot\State"
$exists = RegKeyExists($hKey)

If $exists Then
    MsgBox(0, "启动方式", "系统是UEFI启动")
Else
    MsgBox(0, "启动方式", "系统是BIOS启动")
EndIf

在这个脚本中:
#NoTrayIcon:这个指令用于隐藏脚本在系统托盘中的图标。
RegRead($hKey, $sValue):这行代码虽然没有在后续真正使用读取值的功能,但它引入了注册表读取相关的函数。
$hKey = "HKLM\SYSTEM\CurrentControlSet\Control\SecureBoot\State":定义了要检查的注册表键路径,这里是 UEFI 安全启动相关的键。
$exists = RegKeyExists($hKey):使用RegKeyExists函数来检查指定的注册表键是否存在。如果存在,$exists变量的值为 1,否则为 0。
根据$exists的值,通过MsgBox函数弹出消息框来显示系统是 UEFI 启动还是 BIOS 启动。
3.注意事项
这个方法在大多数情况下是可靠的,但也有一些特殊情况。例如,某些非标准的系统配置或者一些旧版本的 UEFI 实现可能会导致判断不准确。
脚本需要以管理员权限运行,因为访问HKLM(HKEY_LOCAL_MACHINE)下的某些注册表键需要管理员权限。否则,可能会因为权限不足而无法正确检查注册表键,导致错误的判断结果。

版权声明:文章图片资源来源于网络,如有侵权,请留言删除!!!
广告也精彩
admin
  • 本文由 发表于 2024年11月17日 21:01:14
  • 转载请务必保留本文链接:https://www.58pxe.com/12380.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: