설치 / 사용기

소프트웨어 아래 글에 그거 일부 기능만 완성(수정)

2024.03.25 02:15

라랑 조회:406 추천:16

민망하게 아랫글도 저군요....

 

아뭏튼 그냥 기본 기능 한개라도 살리자싶어서 하나는 완성을 해놨습니다.

이름도 다른 거랑 헷갈리지 마시라공 RoBoot로 지어놨어요 ㅎㅎ

2024-03-25_020322.png

왼쪽에 우클릭 등록만 살려놨습니다.

오른쪽 1회부팅 생성은 OpenFileRequester 로 열어서 파일 선택하고 선택하면 알아서 등록하고 부팅하는걸로

만드려고 했는데 사실 연결만 하면 되는데 의욕상실중이라... ;;;

 

- 레지 자동 삭제 기능 없음

 

- MBR 부팅기능도 없음 (원래 소스에는 판별해서 바꿔서 넣는데... 역시 나중에^^)

 

- BCD 자동 삭제도 없음(마구 누적되니... Bootice로 지워주시거나 Msconfig 부팅 탭에서 지워주셔야 합니다.

  (넣기는 할건데.... 지금은 없어요^^)

 

- 오른쪽 메뉴 안됨(1회 부팅 생성) 눌러서 생기는 결과는 책임 안짐...;

 

- 안내 메시지가 아예 없음 (뭐가 실행됐는지 만건지 안보임....)

 

- wim 파일만 등록해놓음... 로컬머신에 해놨는지, 클래스루트에 해놨는지 기억이...; 아마 HKCR쪽인듯

기본 설치하면 HKCU쪽에는 .wim이 없어서 키를 새로 만들어야해서 일단 HKCR에다 만들어 놓은 것 같네요.

저도 이게 맘에 안들지만 역시 나중에 수정을 ^^: 

 

관리자권한도 추가 자동 생성이나 검사 기능도 안해놔서... 관리자 권한 없으면 실행이 안됨;;

 

그래도 그냥 가지고 노실 장난감으로 쓰실분은 써보시라는 의미롱... ^^;

저의 컨셉은 정갈하게 다져진 이쁜 것이랑은 절대 안친하고 대충 연습해보고 장난감으로 오픈하는...

 

------ 파일첨부에 실행파일과 원본 소스 첨부하겠습니다. 아래는 소스코드입니다.

------ 수정과 배포는 자유이지만... 이처럼 무성의한 것을 배포하시면 욕먹으실수도... 다른거 좋은 것도 많은데...;

 

EnableExplicit

 

Global Window_0

Global Button_0, Button_1

Global Event

Global Quit

Global BFile_A$ = ProgramParameter(0)

 

Procedure SetBCDValue()

  OpenConsole()

  Define B_GUID$

  Define BFile_R.s{1}

  Define BFile_Name$ = GetFilePart(BFile_A$)

  Define BFile_Path$ = Mid( GetPathPart(BFile_A$) , 3, StringByteLength(GetPathPart(BFile_A$) ) )

  Define BFile_R.s{1} = GetPathPart(BFile_A$)

  

  Protected guid_run, Output$

  guid_run = RunProgram("bcdedit", "/create /d "+#DQUOTE$+BFile_Name$+#DQUOTE$+" /application osloader", "", #PB_Program_Open | #PB_Program_Read)

  Output$ = ""

  If guid_run

    While ProgramRunning(guid_run)

      If AvailableProgramOutput(guid_run)

        Output$ + ReadProgramString(guid_run, #PB_Ascii) + Chr(13)

      EndIf

    Wend

    Output$ + "Exitcode: " + Str(ProgramExitCode(guid_run))

    CloseProgram(guid_run) ; Close the connection to the program

  EndIf

  

  B_GUID$ = Mid(Output$, 1, 38)

  RunProgram("xcopy", #DQUOTE$+"c:\windows\system32\boot.sdi"+ #DQUOTE$ +" " + #DQUOTE$+GetPathPart(BFile_A$)+#DQUOTE$+ " /y", "", #PB_Program_Wait)

  RunProgram("bcdedit", "/create {ramdiskoptions} /d " + #DQUOTE$+BFile_Name$+#DQUOTE$, "", #PB_Program_Wait)

  RunProgram("bcdedit", "/set {ramdiskoptions} description " + #DQUOTE$+BFile_Name$+#DQUOTE$, "", #PB_Program_Wait)

  RunProgram("bcdedit", "/set {ramdiskoptions} ramdisksdidevice partition="+#DQUOTE$+BFile_R+#DQUOTE$+":", "", #PB_Program_Wait)

  RunProgram("bcdedit", "/set {ramdiskoptions} ramdisksdipath "+ BFile_Path$ + "boot.sdi", "", #PB_Program_Wait)

  RunProgram("bcdedit", "/set " + B_GUID$ + " device " + #DQUOTE$ + "ramdisk=["+ BFile_R +":]" +BFile_Path$ + BFile_Name$+",{ramdiskoptions}"+ #DQUOTE$, "", #PB_Program_Wait)

  RunProgram("bcdedit"," /set " + B_GUID$ + " OSdevice "+ #DQUOTE$ + "ramdisk=["+ BFile_R +":]" +BFile_Path$ + BFile_Name$+",{ramdiskoptions}"+ #DQUOTE$, "", #PB_Program_Wait)

  RunProgram("bcdedit"," /set " + B_GUID$ + " path \windows\system32\boot\winload.efi", "", #PB_Program_Wait)

  RunProgram("bcdedit"," /set " + B_GUID$ + " systemroot \windows", "", #PB_Program_Wait)

  RunProgram("bcdedit"," /set " + B_GUID$ + " winpe yes", "", #PB_Program_Wait)

  RunProgram("bcdedit"," /set " + B_GUID$ + " detecthal yes", "", #PB_Program_Wait)

  RunProgram("bcdedit"," /displayorder " + B_GUID$ + " /addlast", "", #PB_Program_Wait)

  RunProgram("bcdedit","/bootsequence " + B_GUID$ + " /addlast", "", #PB_Program_Wait)

  RunProgram("bcdedit"," /timeout 5", "", #PB_Program_Wait)

  CloseConsole()

EndProcedure

 

Procedure WriteRegKey(RootKey.l, SubKey.s, KeyName.s, KeyValue.s)

  Protected handle.l, result.l

  If RegCreateKeyEx_(RootKey, @SubKey, 0, 0, #REG_SZ, #KEY_WRITE, 0, @RootKey, @result) = 0

    If RegSetValueEx_(RootKey, KeyName, 0, #REG_SZ, KeyValue, StringByteLength(KeyValue)) = 0

      Debug "Value set successfully"

      RegCloseKey_(RootKey)

    EndIf

  EndIf

EndProcedure

 

Procedure Rclk_Registration()

  Protected OpenKey, result, handle

  If RegCreateKeyEx_(#HKEY_CLASSES_ROOT, "SystemFileAssociations\.wim\shell", 0, 0, #REG_OPTION_NON_VOLATILE, #KEY_WRITE, 0, @OpenKey, @result) = 0

    If RegCreateKeyEx_(OpenKey, "RoBoot", 0, 0, #REG_OPTION_NON_VOLATILE, #KEY_WRITE, 0, @handle, @result) = 0

      RegCloseKey_(handle)

    EndIf

    RegCloseKey_(OpenKey)

  EndIf

  

  Define RootKey.l = #HKEY_CLASSES_ROOT

  Define SubKey.s = "SystemFileAssociations\.wim\shell\RoBoot"

  WriteRegKey(RootKey, SubKey, "Icon", "C:\\Windows\\system32\\imageres.dll,147")

  WriteRegKey(RootKey, SubKey, "Position", "Bottom")

  WriteRegKey(RootKey, SubKey + "\Command", "", GetCurrentDirectory() + "RoBoot.exe " + #DQUOTE$+ "%1"+ #DQUOTE$)

EndProcedure

 

Procedure OpenWindow_0(x = 0, y = 0, width = 260, height = 80)

  Window_0 = OpenWindow(0, 0, 100, 260, 80, "RoBoot 0.1", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

  Button_0 = ButtonGadget(#PB_Any, 20, 20, 100, 40, "우클릭 등록")

  Button_1 = ButtonGadget(#PB_Any, 140, 20, 100, 40, "1회부팅 생성")

EndProcedure

 

Procedure Window_0_Events()

  Repeat

    Event = WaitWindowEvent()

    

    Select Event

      Case #PB_Event_CloseWindow

        Quit = #True

      Case #PB_Event_Gadget

        If EventGadget() = Button_0

          Rclk_Registration()  ; Call the procedure to register right-click

        ElseIf EventGadget() = Button_1

          SetBCDValue()

        EndIf

    EndSelect

  Until Quit = #True

EndProcedure

 

If BFile_A$ <> ""

  SetBCDValue()

  Rclk_Registration()

Else

  OpenWindow_0()

  Window_0_Events()

EndIf

 

------------------  오전에 밖으로 좀 싸돌아다니다 왔더니 하나는 수정을 해야겠다는 생각이 들어서 손을 봤습니다. ------------

2024-03-25_150609.png

 

2024-03-25_150655.png

 

이렇게 2부분을 수정/추가해서 오른쪽 버튼도 기능을 연결은 해놨습니다.

너무 설명이 불친절해서 ^^: 근데 지금 보니까 Choose the Movie to Play네요 ㅎㅎ ... 

기능만 바꾸고.... 꾸미는 멘트같은건 신기할 정도로 눈에 안들어오는군요.

 

글을 새로 작성한 게 아니라 첨부파일명을 바꿔서 올려야겠군요; 실행파일은 새로 컴파일한 것으로 바꿔놓겠습니다.

혹시라도 2개 비교해서 보실분은 비교해서 보시라고....;

 

 

 

 

번호 제목 글쓴이 조회 추천 등록일
[공지] 사용기/설치기 이용안내 gooddew - - -
10932 윈 도 우| [추가] Win 11 23H2 22631.3374 설치 전 Update+Drv통합 CMD [14] do98 706 23 03-28
10931 기 타| WimLib Api - WimLib BR 버전에 적용하여 보았습니다.. [7] 왕초보 675 13 03-28
10930 윈 도 우| Notepad2로 열기 [우메뉴에 등록] [5] 청락 514 18 03-28
10929 기 타| 입니다님 감사합니다 - WimLib Api 백업,복원을 하여 보았... [13] 왕초보 737 13 03-28
10928 기 타| WinXPE147수정버전_20240322_ 23H2(빌드22631.3374)사용기 [28] 격자 565 66 03-27
10927 기 타| pureBasic - 화면 캡처 프로그램을 만들어 보았습니다. [8] 왕초보 806 16 03-27
10926 윈 도 우| MS 계정 사용 또는 사용안함.bat 테스트 [13] suk 896 46 03-27
10925 윈 도 우| KB5035942 (OS Builds 22621.3374 and 22631.3374) [6] 16k 720 16 03-27
10924 기 타| WinXPE147수정버전_20240322_22H2(빌드19045.4170)사용기 [42] 격자 654 67 03-26
10923 소프트웨어| 유튜브 멀티 다운로드 - 멀티 오디오트랙 및 기타 옵션 기... [15] 굿듀님스토 492 28 03-26
10922 기 타| 【수정】 Easylight 288mb-Wifi ToolsEL DVD PE [29] 딸랑쇠 1425 58 03-26
10921 기 타| [추가] Popup Menu Launcher (MPause) - 도우미 버전 프리뷰 [21] 빨강모자 459 34 03-26
10920 소프트웨어| WIM 정보 v0981 - 검색 기능 추가.편의성 향상(약간의 버그... [10] 입니다 765 35 03-26
10919 기 타| pureBasic IFW BR OneClick v0.02 - 드래그, PE 설정 기능... [12] 왕초보 737 27 03-26
10918 기 타| Snapshot_BR_Single_v3.0 감사 사용기^^ [7] 수리수리 631 17 03-25
10917 소프트웨어| Advanced Installer 한글 패치 2종 [78] SPiRiTY 1063 106 03-25
10916 윈 도 우| 무인 설치 unattend.xml 에서 윈도우 11만 특정 작업하기 [16] suk 812 41 03-25
» 소프트웨어| 아래 글에 그거 일부 기능만 완성(수정) [11] 라랑 406 16 03-25
10914 소프트웨어| PureBasic으로 BCD 툴 따라해보는 중 [4] 라랑 548 9 03-24
10913 기 타| WinXPE147수정버전_20240322_ 23H2(빌드22631.3296)사용기 [66] 격자 1197 114 03-23
XE1.11.6 Layout1.4.8