How to tell if the Windows Installer boots in EFI or BIOS?

Now, I'll cut to the chase and show you how to find this log file.

I have done this with a retail Windows Vista DVD disc, just for the purpose of demonstrating this. But this should be the same even if you boot from a USB flash drive, or if you use Windows 7.

When you boot from a Windows DVD or USB you will first see a dialog where you choose language and keyboard layout. Do this step and click Next.

Then click the Install now button.

When you get to the screen where it asks you for a product key press Shift+F10 to get to the command prompt.

Your marker should be at X:\Sources> now.

how to search all windows directories for log files

To look through the folders for log files you can type dir ..\*.log /s

how to open a log file in notepad from command prompt

The file you are looking for is titled setupact.log. Can you see it in the results? It should be located at X:\Windows\panther.

To open this file in notepad without changing directory you can type notepad ..\windows\panther\setupact.log

If the file is there, which it should be, then this will open it in Notepad. Now while in Notepad, press Ctrl+F and type in callback and press Enter.

You should see several entries with this word, but the one you are interested in is titled Callback_BootEnvironmentDetect. Press Enter repeatedly until you spot it.

how to find the word "callback" in the log in notepad

In my case, it says Callback_BootEnvironmentDetect:FirmwareType 1.

I think this is because this is on Windows Vista, and since this is a BIOS system I am guessing that Type 1 stands for BIOS. So if you would do the same with Vista on an UEFI system it would most likely say Type 2. For Windows 7 the same lines would probably just say UEFI or BIOS.

In short...

Windows Vista:

Callback_BootEnvironmentDetect:FirmwareType 1 means BIOS

Callback_BootEnvironmentDetect:FirmwareType 2 means UEFI

Windows 7:

Code:Callback_BootEnvironmentDetect: Detected boot environment: BIOS

Code:Callback_BootEnvironmentDetect: Detected boot environment: UEFI

You may also want to check out the TechNet article on how to deploy Windows 7 to UEFI-based computers.

You may have noticed that most people use EFI and UEFI interchangeably, but the UEFI is a later development and EFI is the old one. If I'm not mistaken it stands for Universal Extendable Firmware Interface. Just don't get confused by this, it usually means the same thing. It may say EFI or UEFI in your motherboard manual, and you need to have it enabled.


Open a command prompt (as an administrator), and run:

bcdedit /enum

This will enumerate the BCD settings, you'll get an output similar to this one:

Windows Boot Manager
--------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume1
description             Windows Boot Manager
locale                  en-US
inherit                 {globalsettings}
default                 {current}
resumeobject            {3c6390c7-c6ce-11e1-8e2f-c6d882f2969a}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 30

Windows Boot Loader
-------------------
identifier              {current}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Windows 7
locale                  en-US
inherit                 {bootloadersettings}
recoverysequence        {3c6390cb-c6ce-11e1-8e2f-c6d882f2969a}
recoveryenabled         Yes
osdevice                partition=C:
systemroot              \Windows
resumeobject            {3c6390c7-c6ce-11e1-8e2f-c6d882f2969a}
nx                      OptIn

Go through the list and look for Windows Boot Loader. If your system is booted in EFI mode, the path value will be \Windows\system32\winload.efi (note the .efi extension - this will revert to .exe otherwise).

Source

http://www.uefi.org/events/UEFI-Plugfest-WindowsBootEnvironment.pdf