설치 / 사용기

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

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 - - -
761 소프트웨어| 프로세서 익스플로러 활용기 [12] 집앞의_큰 1341 16 04-27
760 소프트웨어| Macrium Reflect 7.2.4414 Potable WIN/PE 겸용 사용기 [13] 보리아빠 974 16 08-11
759 소프트웨어| Terabyte Image For Windows 하위 및 상위 버전 호환 사용기 [14] 혁명신로 1605 16 01-17
758 소프트웨어| 각종 소프트웨어 오작동에 대한 경험으로... [9] 디폴트 1655 16 07-15
757 소프트웨어| Windows Update Blocker v1.5 업데이트 방지 테스트 [8] suk 1715 16 07-24
756 소프트웨어| Move ~~~ Over There 업데이트 4 [8] 지후빠 997 16 08-23
755 소프트웨어| Ventoy부팅후 aio boot 사용하기 [14] 제니센 1103 16 10-18
754 소프트웨어| [끌올] suk님 PE 부팅등록 + 우클릭에 1회성 PE 부팅하기 [12] 오스 1111 16 01-11
753 소프트웨어| Ventoy앞 OS뒤 갈아엎은뒤 OS재설치 스샷 (Bios MBR모드편) [22] 메인보드 886 16 05-20
752 소프트웨어| Wim파일에 추가하기(-append)- RSimageX이용 [8] 카멜 878 16 12-06
751 소프트웨어| qnd님 Ventoy 첨부 PE 3종 간단 스샷 [11] do98 889 16 12-21
750 소프트웨어| [종료]BlueskyFRCUtil + 팟플레이어 업데이트 [8] DengJang 872 16 12-19
749 소프트웨어| 크롬 우클릭 가능 확장 프로그램 [4] asklee 1593 16 03-19
748 소프트웨어| [종료]단일 파일 몇 가지 업데이트_1215 [10] DengJang 630 16 12-15
747 소프트웨어| [ChatGPT 활용] 2차 - 프로그래밍 언어 모르는 사람의 런처... [15] 상발이 412 16 03-05
746 소프트웨어| [ChatGPT 활용] 3차 - 프로그래밍 언어 모르는 사람의 런처... [6] 상발이 519 16 03-05
» 소프트웨어| 아래 글에 그거 일부 기능만 완성(수정) [11] 라랑 406 16 03-25
744 소프트웨어| Easy ISO Creator가 이렇게 변할예정 입니다. [28] 오펜하이머 6485 17 02-17
743 소프트웨어| 비상용pe-통합 [17] 소~나무수 10630 17 02-11
742 소프트웨어| GRUB 자동 복구 솔루션 디스크 탑재 프로그램 완성 [28] 오늘을사는 5991 17 05-09
XE1.11.6 Layout1.4.8