1.原理
在 Windows 系統(tǒng)中,可以通過檢查系統(tǒng)的注冊(cè)表來判斷是 UEFI 還是 BIOS 啟動(dòng)。對(duì)于 UEFI 啟動(dòng)的系統(tǒng),在注冊(cè)表的HKLM\SYSTEM\CurrentControlSet\Control\SecureBoot\State鍵下會(huì)有相關(guān)的 UEFI 安全啟動(dòng)的配置信息;而 BIOS 啟動(dòng)的系統(tǒng)沒有這個(gè)鍵。
2.使用 AutoIt(AU3)實(shí)現(xiàn)判斷的步驟
首先,需要使用 AutoIt 的注冊(cè)表操作函數(shù)來檢查指定的注冊(cè)表鍵是否存在。以下是一個(gè)簡(jiǎn)單的 AutoIt 腳本示例:
#NoTrayIcon RegRead($hKey, $sValue) ; 檢查UEFI安全啟動(dòng)相關(guān)的注冊(cè)表鍵是否存在 $hKey = "HKLM\SYSTEM\CurrentControlSet\Control\SecureBoot\State" $exists = RegKeyExists($hKey) If $exists Then MsgBox(0, "啟動(dòng)方式", "系統(tǒng)是UEFI啟動(dòng)") Else MsgBox(0, "啟動(dòng)方式", "系統(tǒng)是BIOS啟動(dòng)") EndIf
在這個(gè)腳本中:
#NoTrayIcon:這個(gè)指令用于隱藏腳本在系統(tǒng)托盤中的圖標(biāo)。
RegRead($hKey, $sValue):這行代碼雖然沒有在后續(xù)真正使用讀取值的功能,但它引入了注冊(cè)表讀取相關(guān)的函數(shù)。
$hKey = "HKLM\SYSTEM\CurrentControlSet\Control\SecureBoot\State":定義了要檢查的注冊(cè)表鍵路徑,這里是 UEFI 安全啟動(dòng)相關(guān)的鍵。
$exists = RegKeyExists($hKey):使用RegKeyExists函數(shù)來檢查指定的注冊(cè)表鍵是否存在。如果存在,$exists變量的值為 1,否則為 0。
根據(jù)$exists的值,通過MsgBox函數(shù)彈出消息框來顯示系統(tǒng)是 UEFI 啟動(dòng)還是 BIOS 啟動(dòng)。
3.注意事項(xiàng)
這個(gè)方法在大多數(shù)情況下是可靠的,但也有一些特殊情況。例如,某些非標(biāo)準(zhǔn)的系統(tǒng)配置或者一些舊版本的 UEFI 實(shí)現(xiàn)可能會(huì)導(dǎo)致判斷不準(zhǔn)確。
腳本需要以管理員權(quán)限運(yùn)行,因?yàn)樵L問HKLM(HKEY_LOCAL_MACHINE)下的某些注冊(cè)表鍵需要管理員權(quán)限。否則,可能會(huì)因?yàn)闄?quán)限不足而無法正確檢查注冊(cè)表鍵,導(dǎo)致錯(cuò)誤的判斷結(jié)果。文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/12380.html
文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/12380.html
評(píng)論