기 타 Rainmeter - BIOS, UEFI 체크를 레지값으로 하였습니다
2024.05.20 15:25
저의 경우 빠른 실행에 표시하던 BIOS, UEFI를 Rainmeter로 옮겼습니다.
Rainmeter에서 표시를 하게 되면서 BIOS, UEFI 체크는 wpeutil.exe 실행후 레지값을 읽어오는 별도의 프로그램을 만들어 레지 결과값에 따라
Rainmeter의 ini에 BIOS,UEFI를 써주는 방식으로 하였습니다
이 방식이 저 나름대로는 간단해서 활용을 하였지만..wpeutil.exe를 실행해주고 레지값을 읽어주는 별도의 프로그램이 있어서 불편한 부분이
있습니다
입니다님께서 PureBasic으로 BIOS, UEFI 구분을 할수 있는 소스를 공개를 해주셔서 업데이트를 하기전에 혹시나하는 마음에 레지 부분을
확인을 하여 보았습니다..wpeutil.exe를 별도로 실행해서 레지값들을 업데이트하지 않아도 되네요
wpeutil.exe를 알게 되었을때 이 부분에 대해서 좀더 테스트를 해보아어야 했었던것 같습니다 오랜시간 쓸데없이 wpeutil.exe를 실행후 레지
값을 추출을 한것 같습니다
wpeutil.exe UpdateBootInfo
For /f "tokens=2* delims= " %%A in ('Reg Query HKLM\System\CurrentControlSet\Control /v PEFirmwareType') Do Set Firmware=%%B
If "%Firmware%" EQU "0x1" set BTYPE=Legacy
If "%Firmware%" EQU "0x2" set BTYPE=UEFI
PE에 관심이 많으신분들은 많이 보신 cmd 명령어일것 같습니다
wpeutil.exe UpdateBootInfo 명령어로 레지값들을 업데이트 후 레지값을 추출해서 BIOS, UEFI 상태를 알수 있습니다
wpeutil.exe UpdateBootInfo 명령어를 실행하는것이 시간이 많이 걸리거나 하지 않습니다 하지만 실행을 할 필요가 없다면 실행할 이유가
없을것입니다
저의 경우 Rainmeter 실행하기 전에 위의 cmd에서 실행한것처럼 wpeutil.exe UpdateBootInfo 실행후 이것이 종료가 되면 레지값을 읽고
레지값에 따라서 BIOS, UEFI 글자를 Rainmeter의 ini에 텍스트를 써주는 방식이었습니다 이 과정 자체가 필요가 없네요
Rainmeter에 대해서 모르는것이 많아서 이런 복잡한 과정이 필요가 했었습니다.
아래는 RecoeryPE.wim에 있는 Rainmeter의 DesktopInfo.ini에 추가한 내용입니다
; BIOS UEFI 모드
[MeasureBiosUefiMode]
Measure=Registry
RegHKey=HKEY_LOCAL_MACHINE
RegKey=System\CurrentControlSet\Control
RegValue=PEFirmwareType
UpdateDivider=-1
Substitute="0":"????","1":"BIOS","2":"UEFI"
[BootModeText]
Meter=String
MeasureName=MeasureBiosUefiMode
Text=%1
X=56
Y=20r
FontColor=0,0,0,255
FontSize=12
FontFace=#Font#
AntiAlias=1
StringAlign=LeftTop
Rainmeter 자체에서 레지값을 읽을수 있어서 레지값을 읽고 그 값에 따라서 BIOS, UEFI 텍스트를 보여줍니다
간단하죠 PE 부팅시에 PEFirmwareType 레지값이 설정이 되어서 wpeutil.exe UpdateBootInfo를 별도로 실행해 주지 않아도 됩니다
부팅 과정에서 정확히 어떤 시점에서 PEFirmwareType 레지값이 결정이 되는지는 모르겠습니다..일단은..wpeutil.exe UpdateBootInfo를 실행
하지 않고 Rainmeter 자체로 해결이 되어서 저는 편해졌습니다
Rainmeter에 대해서 잘아시는 분들을 이미 알고 게신 내용이실것 같습니다..
이 간단한것을 몰라서 오랜시간 엉뚱한 방법들을 사용을 한것 같습니다
1. Rainmeter에 UEFI 표시가 되었습니다
2. PEFirmwareType 레지값이 2 입니다..2는 UEFI 모드입니다
3. wpeutil.exe UpdateBootInfo를 실행하고 레지를 확인하는 별도의 프로그램이 없습니다
4. DesktopInfo.ini에 추가한 내용입니다 Rainmeter에서 레지값을 읽고 레지값에 따라서 BIOS, UEFI를 표시하여 줍니다
5. MBR 시스템에서 PE를 부팅하였습니다..BIOS로 표시가 되고 있습니다
6. BCD Repair GUI v7.2에서는 api를 활용해서 구분을 하고 있습니다
7. 다른 Rainmeter에도 레지값을 읽어서 표시하도록 추가를 하였보았습니다
8. 딸랑쇠님 작품에서 BIOS, UEFI 표시를 추가하여 보았습니다...넣은곳이 없어서 부팅 시간앞에 넣었습니다
9. Rainmeter 실행은 탐색기 실행전에 실행이 되고 있습니다
10. 마무리
BIOS, UEFI 구분을 위해서 오랫동안 wpeutil.exe UpdateBootInfo 명령어 실행후에 레지값을 읽어 오는 방식을 활용하였습니다
정확히 어떤 시점에서 레지값이 설정이 되는지 확인을 하지 않았지만...wpeutil.exe UpdateBootInfo를 실행하지 않아도 레지값을 추출하는
데 문제가 없는것 같습니다.
덕분에 Rainmeter 자체에서 레지값을 바로 읽어서 하는 방식으로 하여보았습니다
입니다님께서 PureBasic에서 BIOS, UEFI를 체크하는 소스를 공개하여 주시지 않았다면 저도 Rainmeter 부분을 업데이트하지 않았을것입니
다..좋은 소스를 공해하여 주신 덕분에 BCD Repair GUI v7.2도 업데이트 하고 Rainmeter도 간단한 방법을 찾을수 있었습니다
입니다님 감사합니다...
BR 버전 업데이트시에 Rainmeter도 업데이트해서 RecoveryPE.wim에 적용을 하도록 하겠습니다
웃음이 가득한 하루가 되시길 바랍니다
수고 하셨습니다^^