설치 / 사용기

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

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 - - -
2480 소프트웨어| 실행 목록 및 화면 캡처 v0.2 [16] 입니다 848 33 04-11
2479 소프트웨어| Building Information Modeling 한글을 찾아서~ [1] 습관 228 4 04-10
2478 소프트웨어| 유튜브 멀티다운로드 - 플레이 기능 [11] 굿듀님스토 395 25 04-04
2477 소프트웨어| PureBasic - AZJIO ChkDskGui_4.2.2_Admin_KO [20] 지후빠 611 50 04-01
2476 소프트웨어| DLnow Video Downloader [15] 사랑의음악 551 34 04-01
2475 소프트웨어| 유튜브 멀티다운로드 - 네이버 치지직 실시간 고화질 재생 [8] 굿듀님스토 846 13 03-31
2474 소프트웨어| PureBasic - AZJIO BCDBootGUI 한글 [22] 지후빠 738 57 03-30
2473 소프트웨어| 유튜브 멀티 다운로드 - 네이버 치지직 [1] 굿듀님스토 606 12 03-30
2472 소프트웨어| 아프리카TV 실시간 방송 실시간으로 플레이어로 보기 [17] 굿듀님스토 814 42 03-30
2471 소프트웨어| 유튜브 멀티 다운로드 서포트 목록 [5] 굿듀님스토 402 21 03-30
2470 소프트웨어| 유튜브 멀티 다운로드 트위치 생방송 다운로드 지원 [41] 굿듀님스토 725 65 03-29
2469 소프트웨어| WIM 정보 v0983 - 검은색 배경 버그 수정 [13] 입니다 781 49 03-29
2468 소프트웨어| 유튜브 멀티 다운로드 - 멀티 오디오트랙 및 기타 옵션 기... [15] 굿듀님스토 492 28 03-26
2467 소프트웨어| WIM 정보 v0981 - 검색 기능 추가.편의성 향상(약간의 버그... [10] 입니다 765 35 03-26
2466 소프트웨어| Advanced Installer 한글 패치 2종 [78] SPiRiTY 1063 106 03-25
» 소프트웨어| 아래 글에 그거 일부 기능만 완성(수정) [11] 라랑 406 16 03-25
2464 소프트웨어| PureBasic으로 BCD 툴 따라해보는 중 [4] 라랑 548 9 03-24
2463 소프트웨어| WIM 정보 v0970 - bcd 1회 부팅 - 소소한 버그들 수정. WIM... [16] 입니다 906 51 03-22
2462 소프트웨어| 헉시 저처럼 PureBasic 시작해보신 분 계실라나요? [6] 라랑 489 8 03-21
2461 소프트웨어| 크롬 123버전 예전 UI 변경 방법... [11] DengJang 682 23 03-20
XE1.11.6 Layout1.4.8