설치 / 사용기

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

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 - - -
11072 소프트웨어| Movie To GIF ==> GIF 만들기 new 사랑의음악 36 0 20:19
11071 기 타| 11 wim통합 PE [7] new 딸랑쇠 185 15 19:37
11070 기 타| WinXPE147수정버전_20240322_ 23H2 ( 빌드22631.3527) [52] new 격자 605 114 13:32
11069 기 타| PureBasic Launch - 폴더내 lnk 파일까지 보이도록 하였습니다 [6] new 왕초보 439 8 11:18
11068 기 타| 씨잘때기 추가해 보기 [71] update 집앞의_큰 1091 130 04-26
11067 기 타| 딸랑쇠님 ToolsBR 폴더에 LaunchBar를 활용하여 보았습니다 [9] 왕초보 720 16 04-26
11066 하드웨어| WD HDD PCB 전원부 수리 [4] update gooddew 673 19 04-26
11065 기 타| MP3경음악모음 편집 알림없이삭제합니다 [31] update V무등산V 1035 73 04-25
11064 기 타| 【추가】 PE에 “런처” 추가하기 [12] update 딸랑쇠 886 47 04-25
11063 윈 도 우| 11 System PE [262] update 집앞의_큰 1789 357 04-25
11062 기 타| LaunchBar 메뉴 등록을 자동으로 하여 보았습니다. [12] 왕초보 726 24 04-25
11061 윈 도 우| Windows 11 24H2 두줄 비호환 경험 [1] GreenTea 465 5 04-25
11060 소프트웨어| ScreenHunter 7 Pro (7.0.1461 64-bit) 한국어 배포 [42] 사랑의음악 443 133 04-25
11059 소프트웨어| HotCorners v0.2 , sLaunch4 v0.2.1 [13] 지후빠 499 42 04-24
11058 기 타| Win11 PE를 rufus로 USB 부팅을 하여 보았습니다 [5] 왕초보 729 12 04-24
11057 소프트웨어| OKR 엔진 열번째에 4boot.wim넣어 윈도우 청소 [15] wfja88 433 36 04-24
11056 기 타| BCD Repair GUI 업데이트, 부팅모드는 Rainmeter에 표시하... [12] 왕초보 698 13 04-24
11055 기 타| Win11 RecoveryPE.wim 파일 피드백 관련입니다 [9] 왕초보 718 15 04-24
11054 윈 도 우| Win11_KB5036980 [6] 16k 734 8 04-24
11053 소프트웨어| 화질 손상 없이 이미지(사진) 파일 압축 테스트 [3] Day 821 23 04-23
XE1.11.6 Layout1.4.8