설치 / 사용기

기 타 pureBasic - PE 1회 부팅 PE 체크기능을 추가하여 보았습니다.

2024.03.21 18:06

왕초보 조회:955 추천:23

먼저 지식을 아낌없이 베풀어 주신 입니다님께 머리숙여 감사드립니다

복 많이많이 받으십시요

 

pureBasic을 배우고 있는중이어서 진도가 나가는것이 느릴수 밖에 없습니다.. 생각지도 않은 진도를 팍 나가게 되었습니다

오늘 PESettings에 배경사진을 추가하는 사용기에 입니다님께서 정상 wim 파일일지 아닌지를 구분할수 있는 함수를 소개를 하여 주셨습

니다    api를 이용하는것이어서 Dism이나 WimLib를 이용하는것 처럼 별도의 추가 파일은 필요가 없습니다

 

PE 1회 부팅 관련해서는 오토잇버전과 cmd 버전 2가지에 대해서 사용기를 썼었습니다..cmd 버전을 스크린샷에 소개도 했었습니다

cmd에서는 어쩔수 없이 WimLib를 이용하지만 오토잇의 경우 입니다님이 소개하여주것처럼 dll을 활용을 합니다

이것을 pureBasic로 할 능력이 되지 않아서 아직 고려 대상이 아니었습니다..

 

입니다님께서 사용기에 소개를 해주신 내용은 wim 파일의 이미지 갯수를 파악해서 wim 파일의 정상 유무를 판단을 합니다

PE 1회 부팅에서는 wim이 정상이면서 1회 부팅이 가능한 PE라는것을 판단을 해야합니다..윈도우 설치와는 조금 상황이 다릅니다

입니다님께서 알려주신 소스로는..PE인지 체크를 할수가 없어서..소스를 가지고 구글을 검색을 했습니다..이것이 저의 실수였습니다

 

구글 검색은 실패했습니다..설명들을 보고 응용할 능력이 되지 않았습니다..그런데 중요한것을 잊고 있었죠...

입니다님의 Wiminfo 작품은 소스가 공개되어 있습니다.. 매인 소스가 6천줄이나 되어서..용어를 알지 못하면 그냥 외계어로 보여서 문제

이기는 합니다.. 입니다님께서 댓글에 알려주신 소스로 검색을 해서 살펴보았더니 필요한것이 딱 있었습니다

 

윈도우 백업,복원에 필요한 소드는 이미 입니다님이 다 공개를 해주셨는데 못찾고 있었던것입니다..

앞으로는 입니다님 소스를 더 열심히 살펴봐야할것 같습니다..

 

입니다님 멋진 작품에 소스까지 베풀어 주셔서 감사합니다

 

진행 과정을 자세히 정리를 한것은 입니다님께서 공개를 하여 주신 소스에 많은것들이 있고..도움을 주실 입니다님이 계신 상황이어서

윈도우 설치나 백업,복원에 관심이 있으신분들을 도전을 해보시는것도 좋을것 같아서 입니다

 

pecmd.exe 관련해서도 입니다님께서 도움을 주셔서 많이 배울수 있었습니다..그때 배웠던 지식과 소스들을 아직도 활용을 하고 있습니다

기회가 있을때 필요한것을 얻으실수 있으셨으면 좋겠습니다

 

아래는 구글 검색을 해서 찾은 정보입니다..어렵다는 구조체 이야기도 나옵니다

 

https://learn.microsoft.com/ko-kr/windows-hardware/manufacture/desktop/wim/dd834971(v=msdn.10)?view=windows-11

 

WIMGetImageCount

 

DWORD

WINAPI

WIMGetImageCount(

    HANDLE hWim

    );

    

반환 값은 .wim 파일의 이미지 수입니다. 

이 값이 0이면 이미지 파일이 잘못되었거나 적용할 수 있는 이미지가 포함되지 않습니다.

 

WIMGetAttributes

 

BOOL

WINAPI

WIMGetAttributes(

    HANDLE     hWim,

    PWIM_INFO  pWimInfo,

    DWORD      cbWimInfo

    );

    

[out] .wim 파일에 대한 정보와 함께 반환되는 WIM_INFO 구조체에 대한 포인터입니다.

 

WIM_INFO

 

typedef struct _WIM_INFO

{

    WCHAR  WimPath[MAX_PATH];

    GUID   Guid;

    DWORD  ImageCount;

    DWORD  CompressionType;

    USHORT PartNumber;

    USHORT TotalParts;

    DWORD  BootIndex;

    DWORD  WimAttributes;

    DWORD  WimFlagsAndAttr;

}

WIM_INFO, *PWIM_INFO, *LPWIM_INFO;

 

BootIndex

 

.wim 파일에서 부팅 가능한 이미지의 인덱스를 지정합니다. 

이 값이 0이면 부팅 가능한 이미지를 사용할 수 없습니다. 부팅 가능한 이미지를 설정하려면 WIMSetBootImage 함수를 호출합니다.

 

PE에서 부팅 여부를 확인하기 위해서는 BootIndex 값을 가져와야 합니다..

cmd에서는 Dism, imageX, WimLib에서 정보를 가져와서 추출을 할수 있습니다

이 내용을 읽었는데도 윈도우 ISO 안에 있는 boot.wim에서 값이 2가 나올때 이미지가 2개여서 인줄 알았습니다

입니다님께서 댓글을 남겨주신 덕분에 두번째 이미지로 부팅이 된다는것을 알았습니다..아직도 배워야 할것이 너무 먆습니다

 

------------------------------------------------------------------------------------------------------

추가입니다.

입니다님께서 지난 사용기에 BootIndex에 대해서 자세히 설명을 해주셨습니다

이 BootIndex 값은 이 번호의 이미지로 부팅을 하라는 내용입니다.. PE의 경우는 부팅을 해야해서 이 값이 주어지고 윈도우 설치 wim의

경우 부팅도 되지 않지만 부팅을 하지 않기 때문에 이 BootIndex 값이 0 입니다

이런 차이를 가지고 PE를 구분을 하게 된것입니다

윈도우 설치 wim을 만들때 BootIndex 값을 실수(?)로 설정을 할수도 있을것입니다.

PE는 무조건 값이 있을것입니다.. MS에서 따로 규정한 방법은 아니어서 단순히 꼼수로 대충 구분을 하는 정도로 보아 주십시요

 

wim 파일 정상 비정상은 pe에서 wim 파일에서 정보를 가져오려고 할때 wim 파일이 정상이 아니면 아예 에러가 납니다

에러가 날때는 메세지에서 비정상이라고 보여주는것입니다..

------------------------------------------------------------------------------------------------------

 

입니다님께서 댓글로 지식을 베풀어 주신 덕분에 입니다님 소스에서 찾은 것을 PE 1회 부팅이 적용을 하여 보았습니다

 

1. wim 파일이 정상인지 아닌지에 구분해서 정상이 아닌 경우 안내 메세지를 보여줍니다

2. 정상 wim 파일인 경우 PE가 아니면 안내 메세지를 보여줍니다

 

이제서야 오토잇으로 만들었던 PEBoot 프로그램과 같은 수준이 된것 같습니다

한가지는 다릅니다  BCD에 등록되는 1회 부팅 메뉴는 윈도우로 부팅시에 삭제하지 않습니다..

 

1. 4.0 버전으로 업데이트가 되었습니다

1.jpg

 

2. 윈도우 백업 파일의 경우 입니다...PE가 아니라고 안내를 하고 있습니다

2.jpg

 

3. 윈도우 ISO에 있는 boot.wim 파일입니다..이것은 이미지가 2개 들어가 있죠...부팅이 가능한 PE입니다

3.jpg

 

4. 폴더를 7z으로 압축을 하고 wim 파일로 이름을 바꾼것입니다. 아래처럼 정상적인 wim 파일이 아니라고 안내를 하고 있습니다

4.jpg

 

5. 이 wim 파일을 PE를 압축 해재한후 T.Dism에서 PE로 캡처는 하는 도중에 작업을 중지한것입니다..

   작업중에 중지를 해서 정상 wim이 아니라고 안내 메세지를 보여주고 있습니다

5.jpg

 

6. 정상적인 PE인 경우 아래처럼 1회 부팅여부를 확인하는 메세지가 나옵니다..

  wim 파일 정상여부와 PE 여부에서 wim 파일 정상 여부가 먼저 판단이 됩니다..정상적인 wim 일때 PE 여부를 판단을 합니다

  정상적인 wim이 아니면..api에서 바로 에러가나서 구분이 됩니다  판단하는 실제 시간은 느낄수 없을 정도 입니다

6.jpg

 

7. PE로 부팅이 잘되었습니다

7.jpg

 

8. 다른 PE로 부팅을 하여 보겠습니다

8.jpg

 

9. PE로 부팅을 하였습니다

9.jpg

 

10. 일이 일어서 왔다갔다 하면서 이것은 확인을 안했네요...윈도우 설치 wim 파일입니다..PE가 아니라고 메세지를 보여주고 있습니다

10.jpg

 

11. 마무리

고수님의 댓글 하나는 그냥 댓글이 아니죠...초보에게는 수많은 시간동안 헤메여야 배울수 있는 귀한 지식입니다...

아직 배울단계가 아니데..입니다님 덕분에 단계를 넘어서 PESettings 프로그램에 적용을 할수 있었습니다..

초보의 글에  관심을 가져주시고 지식을 베풀어 주신 입니다님께 다시 한번더 감사인사를 올립니다

 

pureBasic으로 만든 PE 1회 부팅 프로그램은 BCD에 등록된 1회 부팅 메뉴를 윈도우 부팅시에 삭제할 계획이 없습니다.

입니다님의 도움으로 어느 정도 완성이 된것 같습니다. 놓치고 있는 부분들이 있나 살펴보고 문제가 없으면 스크린샷에 소개를 하도록

하겠습니다 

 

오늘을 축구를 하는 날입니다..

온 국민이 함께 웃을수 있는 시간이되었으면 좋겠습니다

즐거운 시간이 되시길 바랍니다

 

번호 제목 글쓴이 조회 추천 등록일
[공지] 사용기/설치기 이용안내 gooddew - - -
10999 기 타| 딸랑쇠님 ToolsBR 폴더에 LaunchBar를 활용하여 보았습니다 [9] 왕초보 977 17 04-26
10998 하드웨어| WD HDD PCB 전원부 수리 [4] gooddew 1096 22 04-26
10997 기 타| 종료 [33] V무등산V 1337 80 04-25
10996 기 타| 【추가】 PE에 “런처” 추가하기 [12] 딸랑쇠 1227 48 04-25
10995 윈 도 우| 11 System PE [309] 집앞의_큰 3843 414 04-25
10994 기 타| LaunchBar 메뉴 등록을 자동으로 하여 보았습니다. [11] 왕초보 981 25 04-25
10993 윈 도 우| Windows 11 24H2 두줄 비호환 경험 [1] GreenTea 707 5 04-25
10992 소프트웨어| HotCorners v0.2 , sLaunch4 v0.2.1 [14] 지후빠 715 44 04-24
10991 기 타| Win11 PE를 rufus로 USB 부팅을 하여 보았습니다 [5] 왕초보 1177 13 04-24
10990 소프트웨어| OKR 엔진 열번째에 4boot.wim넣어 윈도우 청소 [16] wfja88 593 37 04-24
10989 기 타| BCD Repair GUI 업데이트, 부팅모드는 Rainmeter에 표시하... [12] 왕초보 886 14 04-24
10988 기 타| Win11 RecoveryPE.wim 파일 피드백 관련입니다 [9] 왕초보 1071 16 04-24
10987 윈 도 우| Win11_KB5036980 [7] 16k 964 8 04-24
10986 소프트웨어| 화질 손상 없이 이미지(사진) 파일 압축 테스트 [4] Day 957 23 04-23
10985 윈 도 우| IFW_BR_Fast_v3.0_Drag_ 복원리커버리 Win11 x64 PE 실컴... [18] 수리수리 992 16 04-23
10984 기 타| CLaunch를 RocketDock 처럼..아닌것 같네요 [4] 왕초보 885 10 04-23
10983 기 타| PureBasic Launch - 입니다님 투명폼을 활용하여 보았습니다. [10] 왕초보 876 19 04-22
10982 소프트웨어| knm's 4boot.wim 간단 사용기입니다. [11] 지후빠 857 33 04-22
10981 소프트웨어| HotCorners - 화면 코너로 커서가 이동하면 실행 [13] 지후빠 774 44 04-22
10980 기 타| CLaunch - 아이콘 형태로 메뉴를 하여 보았습니다 [7] 왕초보 896 16 04-21
XE1.11.6 Layout1.4.8