anmelder
Goto Top

Registry Eintrag ob Rechner im UEFI oder Kompatibilitätsmodus läuft

Hallo,

ich suche eine Möglichkeit um festzustellen ob der Rechner im UEFI oder Kompatibilitätsmodus läuft.

'reg query HKLM\System\CurrentControlSet\Control /v PEFirmwareType'  
funktioniert offenbar nur unter WinPE, unter Windows 10 gibt es den Eintrag nicht.

MS Seite zu WinPE

Ist es normal daß WinPE nur im reinen UEFI Modus startet oder ist das nur auf meinem Rechner so?

Content-ID: 523671

Url: https://administrator.de/contentid/523671

Ausgedruckt am: 22.11.2024 um 02:11 Uhr

DerWoWusste
DerWoWusste 09.12.2019 um 15:07:54 Uhr
Goto Top
Hi.

Du kannst zum Beispiel msinfo32 starten, da steht der BIOS Mode drin.
WINPE wird wohl auch im non-UEFI startbear sein, wenn Du USB als non-uefi bootest (manche PCs nehmen als Default UEFI, manche MBR, manche erlauben sogar nur noch UEFI).
anmelder
anmelder 09.12.2019 um 15:22:55 Uhr
Goto Top
msinfo32 scheint kein in der Batch nutzbarer Befehl zu sein, zumindest msinfo32 /? ergibt kein Ergebnis und es wird ja das Fenster geöffnet. Steht denn der Biosstatus nicht in der Registry? Woher bekommt denn msinfo32 diese Information?

Bei mir startet WINPE nicht wenn der Kompatibilitätsmodus eingeschaltet ist. Ich habe das mit mehreren Start DVDs ausprobiert. Weiß da jemand mehr?
DerWoWusste
DerWoWusste 09.12.2019 um 15:38:44 Uhr
Goto Top
Ich frage mich, was Du mit WinPE willst - wobei ist es denn da wichtig, ob UEFI benutzt wird?

Unter Windows kannst Du das Vorhandensein einer EFI Partition abfragen bzw, SecureBoot prüfen (nur möglich, wenn UEFI). Google mal hierlang
ITvortex
ITvortex 09.12.2019 um 15:50:51 Uhr
Goto Top
In powershell:

$env:firmware_type

LG Vortex
141965
141965 09.12.2019 aktualisiert um 16:43:30 Uhr
Goto Top
Und hier auch für ältere OS, alle möglichen Varianten
https://www.powershellgallery.com/packages/GetFirmwareBIOSorUEFI/1.0/Con ...
rubberman
Lösung rubberman 09.12.2019 um 17:46:26 Uhr
Goto Top
Powershell im Batchscript
@echo off &setlocal
set "securemode="  
set "biosmode="  
for /f %%i in ('powershell.exe -nop -ep Bypass -c "Confirm-SecureBootUEFI"') do set "securemode=%%i"  
if /i "%securemode%"=="False" (  
  set "biosmode=UEFI with secure boot disabled"   
) else if /i "%securemode%"=="True" (  
  set "biosmode=UEFI with secure boot enabled"  
) else (
  powershell.exe -nop -ep Bypass -c "Confirm-SecureBootUEFI" | >nul find /i "PermissionDenied"  
  if errorlevel 1 (
    set "biosmode=LEGACY boot enabled"  
  ) else (
    echo Access denied. Run the script as Administrator!
    pause
    exit /b
  )
)

echo %biosmode%
pause
Ob das dann unter WinPE auch läuft, kann ich allerdings nicht sagen ...

Steffen
anmelder
anmelder 09.12.2019 um 17:54:05 Uhr
Goto Top
Es ist mir unter einem normalen Windows 10 wichtig ob der UEFI Kompatibilitätsmodus eingeschaltet ist. Ich möchte nach der Erstellung einer PE CD eine Meldung ausgeben wenn das Bios vor dem Neustart auf reines UEFI umgestellt werden muß weil es sonst zu Startproblemen kommen kann wie es bei mir der Fall ist. Deshalb fragte ich ja auch ob PE grundsätzlich nicht mit eingeschalteten Kompatibilitätsmodus läuft oder ob das ein Fehler in meiner Konfiguration mit DISM sein kann.

Ich kann die Meldung natürlich immer ausgeben aber dann muß jeder Nutzer erst umständlich im Bios nachsehen. Nicht jeder kennt sich damit aus und man spart Zeit wenn man nur eine Meldung erhält wenn es nötig ist.

Eure PS Beispiele konnte ich nicht brauchen weil das Programm in einer normalen Batch laufen muß aber ich habe irgendwie über Stichworte aus der Powershellgallery folgendes gefunden:
echo %FIRMWARE_TYPE%
Die Funktion ist wohl undokumentiert aber funktioniert bei mir:
ss64.com

Trotzdem danke ich euch für die schnelle Hilfe.
rubberman
rubberman 09.12.2019 um 18:01:10 Uhr
Goto Top
Ist doch exakt was @ITvortex geschrieben hat. Wie du die Variable nun expandierst (PowerShell oder Batch) ist völlig egal.

Steffen
anmelder
anmelder 09.12.2019 um 19:51:19 Uhr
Goto Top
rubberman: Powershell im Batchscript

Das Script ist gut, das kann ich an anderer Stelle noch brauchen. Ich dachte immer man muß sich entscheiden ob man Batch oder Powershell möchte. Danke
rubberman
rubberman 09.12.2019 aktualisiert um 20:28:26 Uhr
Goto Top
Nee, du kannst sowohl PowerShell Scripts aus Batchcode aufrufen, als auch komplette PS Scripts zu einem PowerShell Kommando umschreiben, in den Batchcode packen und ausführen. Letzteres braucht aber etwas Übung. Der einzige nennenswerte Vorteil ist aber nur, dass du dir das Ausführen per Rechtsklick ersparst.

Steffen