UNSOLVED Multiple Windows Boot Manager using UEFI

  • I have ran into a problem where each time a machine is imaged using UEFI it does not remove the old “Windows Boot Manager” and creates a new entry after each image. Currently my Test machine has 5 WBM entries.The reason this is an issue is because the Setup.cmd script I am using sets the boot order to "Network IPv4, CD-ROM,HDD but with multiple entries it screws up because of the false entries. Has anyone had a similar issue or know a way to reset it during or after imaging?


  • You were correct, using DCC is not an option. I did find that by using the CMD prompt and entering

    bcdedit.exe /enum

    it will display your working Windows Boot Manager but not the extras. However, if you use

    bcdedit.exe /enum firmware

    it will display all the different WBMs, even the faulty ones.
    I am currently trying to build a script that will remove the false entries.

  • @flareimp I found the documentation for DCC. It looks like you can disable devices but I do not see an option to delete them.


    So I think your best bet is using a script based solution like in the links I gave before, either leveraging PowerShell or bcdedit, or attempting to disable the duplicates via DCC. However without DCC having the ability to delete them, you could end up with trouble later when you have a crazy number of those extra entries just disabled.

  • @george1421 That is correct.

  • Moderator

    Just to be clear, if you were to use fog to deploy an image 3 times to a target computer, you would have 3 Microsoft Boot Managers listed in the uefi firmware?

  • @flareimp Ok gotcha, hate when companies keep the old exe name 😕

    So do you know of any in depth documentation for the available commands for DCC? Maybe it has a command available to clear out the entries prior to setting them.

    To be clear, as I understand it, these entries are what you would see in the “selecting boot device” from the BIOS boot options right, not remaining partitions that you do need? In other words its just the entries that remain in the BIOS boot devices and not partitions on disk for those bot entries that remain.

    If DCC doesnt have a command/switch to do this, I wonder if there is another option (a batch file or script) you could run in Setup.cmd prior to cctk.exe that would effectively clear out the invalid entries.

    In some quick google searching maybe something like (I have not tested any of these):
    https://social.technet.microsoft.com/Forums/en-US/63773659-fc98-4b91-8081-1def38af4f9d/multiple-entries-of-quotwindows-boot-managerquot-in-uefi-on-surface-pro-3?forum=mdt (has a couple scripts listed)


    The last one has this entry:

    How to delete a boot entry
    At the command prompt, type:
    bcdedit /delete ID [/f]

    So maybe it can be done using bcdedit from a batch file or something if PowerShell isnt an option like in most of the scripts the other links provide.

    If you find a solution I would be interested to know what it is. Hope this helps.

  • @zer0cool I am using Dell Command Configure, Dell just has the exe file labeled as CCTK.exe. There is not really an error message that pops up but the utility can not set the boot order once the “Windows Boot Manager” has more than two duplicate entries because the uefi.x gets out of order and it selects the wrong device. If I can’t get the boot order set than it will require our techs to visit the machine to PXE boot it because it will have the OS set as the first boot device. Plus, you can only have so many WBM entries so I have read.

  • @flareimp Ok so it looks like you are actually using a Dell utility (cctk) to set boot order. From some quick Googling and not really knowing the tool 2 things stand out to me:

    • Dell seems to potentially have replaced cctk with Dell Command and Configure (DCC), as noted here. May be worth seeing if moving to this tool works better for your needs.
    • I was not able to find a complete listing of cctk commands. I think it was -h was to list all of its options on the command line. I would look to see if there is any option to remove specific boot entries or to clear the boot entries to a default setting, then set to your desired order.

    When you say:

    @flareimp said in Multiple Windows Boot Manager using UEFI:

    but with multiple entries it screws up because of the false entries.

    What do you mean specifically. Is there an error message, does it do something unexpected, do nothing, etc?

  • @zer0cool Here is my Setup.cmd file

    set mydir=%~dp0
    Echo **************
    Echo !!!Set Time!!!
    Echo **************
    Regedit /s "C:\Windows\Setup\TimeZoneSet.reg"
    "C:\Program Files (x86)\Dell\Command Configure\X86_64\cctk.exe" bootorder --bootlisttype=uefi --sequence=uefi.1,uefi.2,hdd.1
    "C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe" /silent
    DEL "C:\Users\Public\Desktop\Dell Command Configure Wizard.lnk" /Q
    Echo *
    Echo **********************************
    Echo !!!Uninstall Fog Legacy Service!!!
    Echo **********************************
    Echo *
    MsiExec.exe /x {91C5D423-B6AB-4EAB-8F17-2BB3AE162CA1} /qn
    RD /Q /S "C:\Program Files (x86)\Fog"
    DEL /Q "C:\fog.log"
    DEL /Q /S "C:\Users\Default\Downloads\*"
    RD /Q /S "C:\Users\Default\Downloads\FogPrep"
    RD /Q /S "C:\Users\Default\Downloads\FogService"
    Echo *
    Echo ***********************
    Echo !!!Checking Location!!!
    Echo ***********************
    ipconfig    | find /i "10.20." > NUL
    IF %ERRORLEVEL% == 0 SET FogServer=
    ipconfig    | find /i "10.21." > NUL
    IF %ERRORLEVEL% == 0 SET FogServer=
    ipconfig    | find /i "10.22." > NUL
    IF %ERRORLEVEL% == 0 SET FogServer=
    ipconfig    | find /i "10.23." > NUL
    IF %ERRORLEVEL% == 0 SET FogServer=
    ipconfig    | find /i "10.25." > NUL
    IF %ERRORLEVEL% == 0 SET FogServer=
    ipconfig    | find /i "10.28." > NUL
    IF %ERRORLEVEL% == 0 SET FogServer=
    ipconfig    | find /i "10.29." > NUL
    IF %ERRORLEVEL% == 0 SET FogServer=
    Echo *
    Echo *
    Echo ***********************************
    Echo !!!Installing Fog Client Service!!!
    Echo ***********************************
    msiexec /i C:\Windows\Setup\Scripts\FOGService.msi /quiet USETRAY="0" HTTPS="0" WEBADDRESS="%FogServer%" WEBROOT="/fog" ROOTLOG="0" /l*v "C:\PerfLogs\fog-install.log"
    Net start FogService
    sc config FOGService start= auto
    rem shutdown /t 0 /r

  • @flareimp Can you share your Setup.cmd script? You may have to add some logic to it to delete these duplicate entries before setting order etc.

    I think what you are seeing is pretty common, not even a Windows only issue really. In my testing I have entries in boot selection for Windows, Fedora and CentOS even though they arent installed (and would fail if selected to boot). I typically go and clean them out manually but if together we find a way to do it via Setup.cmd then I may add the logic to my own process.

  • @quazz Dell Optiplex 9020, 7050, 7440, 7450, and all BIOS on those models are up to date.

  • Moderator

    Brand, model and version of the device in question?

    Check for BIOS updates (funny how we don’t yet call them UEFI updates, even on manufacturer websites)