Jump to content

_IsUEFIBoot——Detemine the Current OS is boot in UEFI mode or not


czyt
 Share

Recommended Posts

 

May it helps those who needed.

 

#include <WinAPI.au3>

; #FUNCTION# ====================================================================================================================
; Name ..........: _IsUEFIBoot
; Description ...: Detemine the Current OS is boot in UEFI mode or not
; Syntax ........: _IsUEFIBoot()
; Parameters ....:
; Return values .: True:OS is boot in UEFI
;                  False: OS is boot in Legacy BIOS
; Author ........: czyt
; Modified ......:
; Remarks .......:
; Related .......: http://techsupt.winbatch.com/webcgi/webbatch.exe?techsupt/nftechsupt.web+WinBatch/DllCall~Information+Booted~UEFI~or~BIOS.txt
; Link ..........:
; Example .......: MsgBox(0,'(*^__^*) The OS is in UEFI Boot mode?',_IsUEFIBoot())
; ===============================================================================================================================
#include <WinAPI.au3>

Func _IsUEFIBoot()
        Local Const $ERROR_INVALID_FUNCTION = 0x1
        Local $hDLL = DllOpen("Kernel32.dll")
        If @OSBuild > 8000 Then
                Local $aCall = DllCall($hDLL, "int", "GetFirmwareType", "int*", 0)
                DllClose($hDLL)
                If Not @error And $aCall[0] Then
                        Switch $aCall[1]
                                ; 1 - bios 2- uefi 3-unknown
                                Case 2
                                        Return True
                                Case Else
                                        Return False
                        EndSwitch
                EndIf
                Return False

        Else
                DllCall($hDLL, "dword", "GetFirmwareEnvironmentVariableW", "wstr", "", "wstr", '{00000000-0000-0000-0000-000000000000}', "wstr", Null, "dword", 0)
                DllClose($hDLL)
                If _WinAPI_GetLastError() = $ERROR_INVALID_FUNCTION Then
                        Return False
                Else
                        Return True
                EndIf
        EndIf
EndFunc   ;==>IsUEFIBoot

updated at 2021-08-13:

  • fixed check err on windows 8 above OS
Edited by czyt

董小姐,你微笑的时候很美,就像安河桥下,清澈的水...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...