설치 / 사용기

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

2024.03.21 18:06

왕초보 조회:757 추천:22

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

복 많이많이 받으십시요

 

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 - - -
10951 기 타| OnceBootMenu v1.0 - BCD 메뉴, Wim 파일 1회 부팅을 만들... [12] 왕초보 905 44 04-04
10950 기 타| Ventoy에서 PE 1회 부팅이 안되는 이유 입니다.. [8] 왕초보 837 15 04-04
10949 기 타| (원인 찾음2) Ventoy에 BCD가 없어서 1회 부팅이 안되네요.. [11] 왕초보 765 17 04-03
10948 기 타| 【공유】 ToolsQT 퀀텀 SystemM+ Easy PE [25] 딸랑쇠 1511 74 04-03
10947 기 타| (추가) pureBasic PESettings v5.0 - DVD,Wim안에 있어도 ... [17] 왕초보 746 31 04-03
10946 기 타| [메시지전송의 분 : 내재작품 링크] 구글번역 저장 도우미... [56] 빨강모자 1088 86 04-02
10945 기 타| pureBasic - ChkDsk GUI v4.1 우클릭 메뉴에 등록을 하였습... [10] 왕초보 746 24 04-02
10944 윈 도 우| unattend.xml 무인 설치에서 적용 순서 테스트 [16] suk 741 28 04-02
10943 기 타| 【공유】 Win11 Wifi 266mb ToolsBR wim통합 PE [29] 딸랑쇠 1461 76 04-02
10942 윈 도 우| 초보사용기^^ PE Boot Menu v1.0 여러개 PE에서 골라서 1회... [10] 수리수리 567 11 04-02
10941 소프트웨어| PureBasic - AZJIO ChkDskGui_4.2.2_Admin_KO [20] 지후빠 612 50 04-01
10940 기 타| pureBasic - PE Boot Menu v1.0 여러개 PE에서 골라서 1회 ... [16] 왕초보 910 34 04-01
10939 기 타| pureBasic - ChkDsk GUI v4.0 버전을 만들어 보았습니다 [11] 왕초보 756 26 04-01
10938 소프트웨어| DLnow Video Downloader [15] 사랑의음악 554 34 04-01
10937 기 타| [테스트중..] 번역 도우미 사용기 스크린샷 - ㅁ자님 작 [18] 굴렁쇠 803 42 03-31
10936 기 타| 【공유】 Win11 Wifi 266mb ToolsBR PE update3 [30] 딸랑쇠 1827 83 03-31
10935 소프트웨어| 유튜브 멀티다운로드 - 네이버 치지직 실시간 고화질 재생 [8] 굿듀님스토 848 13 03-31
10934 기 타| WimLib Api - Cmd용 수정 버전입니다 [7] 왕초보 735 15 03-31
10933 기 타| PECMD HELP EN PDF [7] 지후빠 413 31 03-31
10932 소프트웨어| PureBasic - AZJIO BCDBootGUI 한글 [22] 지후빠 742 57 03-30
XE1.11.6 Layout1.4.8