윈 도 우 Runonce Boot PE 2 (수정)

2020.02.15 15:10

레마클로 조회:1957 추천:16

 

지후아빠님의 파일을 사용하세요.^^

 

https://windowsforum.kr/lecture/12886826

 

 

 

제가 올리는 Runonce Boot PE 2 팁은 여기까지입니다.

더 좋게 수정들 하셔서 사용해주시면 고맙겠습니다..^^

저도 생업에 바쁜 몸이라....................

 

https://windowsforum.kr/lecture/12760209 을 조금 더 다듬어 봤습니다

 

pe가 bcd에 등록되어 있는 조건이고,

suk님 자료 수정 ->  wim부팅등록_우메뉴.zip

바탕화면 컨텍스트메뉴 하단에 보이고, 

RunOncePE-run.vbs로 실행해도 됩니다.

 

      bcd에 등록된 pe명에 공백이 없게 해주시고

      기존등록된 pe명은 툴을 이용해서 공백없게 수정하시고 사용하시면 되겠습니다

         

지후(아)빠님의 도움으로 inputbox부분 수정했습니다

         (지후(아)빠님 고맙습니다.^^)

 

 

bootice 쉬운모드에서 os명 수정하시면 됩니다

 

bootice 쉬운모드.png

 

 

수정된 자료  런원스피이.zip

 

RunOncePE-Maker.vbs를 조금수정하면 bcd에 등록된 pe에 한해서,  말 그대로 런원스부팅이 됩니다.

 

복p.png

 

 

복p2.png

 

 

 

 

RunOncePE-Maker.vbs

 

 

스크립트시작

 

'--------------

If WScript.Arguments.length =0 Then

  Set objShell = CreateObject("Shell.Application")

  objShell.ShellExecute "wscript.exe", Chr(34) & _

  WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1

Else

'--------------

Const BcdLibraryString_Description = &h12000004

Const BcdLibraryString_DisplayOrder = &h24000001

Const WindowsImages = &h10200003

Const LegacyImages = &h10300006

Const BcdLibraryDevice_ApplicationDevice = &h11000001

Const BcdLibraryDevice_ApplicationPath = &h12000002

Const BcdBootMgrDevice_BcdDevice = &h21000022

Const BcdOSLoaderDevice_OSDevice = &h21000001

Const strComputer = "."

 

'-------------------------------------------------------------

Set WshShell = CreateObject("WScript.Shell")

Set FSO = CreateObject("Scripting.FileSystemObject")

curDir = FSO.GetParentFolderName(WScript.ScriptFullName) 

strSystem64 = WshShell.ExpandEnvironmentStrings("%SystemRoot%") & "\System32\"

Set objWMIService = GetObject("winmgmts:" _

 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set objStoreClass = GetObject("winmgmts:{(Backup,Restore)}\\" & _

 strComputer & "\root\wmi:BcdStore")

OSArchCheck = WshShell.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE")

If OSArchCheck = "x86" Then

strSystem86 = strSystem64

Else

strSystem86 = WshShell.ExpandEnvironmentStrings("%SystemRoot%") & "\SysWOW64\"

End If

 

'-------------------------------------------------------------

'Const ForReading=1, Const ForWriting=2, Const ForAppending=8, 

'                              Const OverwriteIfExist=True(덮어쓰기(없으면생성))

Set dFile = FSO.OpenTextFile(curDir & "\bcd-description.txt", 2, True)

objStoreClass.OpenStore "", objStore

objStore.EnumerateObjects WindowsImages, colObjects

For Each objObject in colObjects

      objObject.GetElement BcdLibraryString_Description, objElement

      dFile.Write (objElement.String & vbCrLf)

Next

      dFile.Close

 

'-------------------------------------------------------------

'-------- InputBox(내용[, 제목][, 입력칸에_기본값][, x축좌표][, y축좌표][, helpfile, context])

'-------- InputBox "12345", "숫자입력기", "1",2000, 2000

On Error Resume Next

strData = curDir & "\bcd-description.txt"

 

If FSO.FileExists(strData) Then

  Set ts = FSO.openTextFile(strData,1)

  Dim strLine(9)

  Do Until ts.AtEndOfStream

    i = i + 1

    strLine(i) = ts.ReadLine

    strMsg = strMsg & i & ".  " & strLine(i) & Chr(13) & Chr(13)

  Loop

  ts.Close

 

  x = inputbox(strMsg, "복구용 PE 선택" , "   키보드로 숫자 입력 후 엔터   ")

  If IsNumeric(x) Then x = CByte(x)

  If x <= i Then

    strTXT = strLine(x)

  Else

 

    WScript.Echo "선택 범위를 벗어나 종료합니다."

    WScript.Quit

  End If

 

End If

 

FSO.DeleteFile strData, True

 

Set oFile = FSO.CreateTextFile(curDir & "\openGUID.cmd", True)

oFile.WriteLine "@echo off"

oFile.WriteLine "pushd ""%~dp0"""

oFile.WriteLine "if not defined in_subprocess (cmd /k set in_subprocess=y ^& %0 %*) & exit )"

oFile.WriteLine "setlocal enabledelayedexpansion"

oFile.WriteLine "for /f ""tokens=1,2,3"" %%a in ('bcdedit /enum OSLOADER') do ("

oFile.WriteLine "if %%a EQU identifier set GUID=%%b"

oFile.WriteLine "if %%a EQU description IF %%b EQU " & strTXT & " echo !GUID!>""%~dp0copyID.txt"""

oFile.WriteLine ")"

oFile.WriteLine "exit"

oFile.Close

 

WshShell.Run chr(34) & curDir & "\openGUID.cmd" & Chr(34), 0, True

 

'-------------------------------------------------------------

Set gFile = FSO.OpenTextFile(curDir & "\copyID.txt")  

strText = gFile.ReadLine

gFile.Close

 

strDir = strSystem64 & "PE_Booting.vbs"

If not FSO.FileExists(strDir) Then

Set outFile = FSO.CreateTextFile(strDir, True)

outFile.WriteLine "Set wshShell = WScript.CreateObject(""WScript.Shell"")"

outFile.WriteLine "wshShell.Run ""bcdedit /bootsequence " & strText & """"

outFile.WriteLine "wshShell.Run ""wmic os where """"status='ok'"""" call reboot"", 0, True"

outFile.Close

Else

End If

 

'-------------------------------------------------------------

strOPEN = curDir & "\openGUID.cmd"

strID = curDir & "\copyID.txt"

 

FSO.DeleteFile strOPEN, True

FSO.DeleteFile strID, True

 

 

'WshShell.Run chr(34) & strDir & Chr(34), 0, True

 

 

'-------------------------------------------------------------

z=msgbox("     ★ Context Menu에 복구용 PE 를 넣을까요?  ", 4, "원클릭 PE 만들기")

If z = VbYes Then

      sRegFile = curDir & "\복구용PE.reg"

      WshShell.Run "regedit.exe /s " & Chr(34) & sRegFile & Chr(34), 0, True 

Else

End If

Wscript.Quit

'-------------------------------------------------------------

End If

 

스크립트끝

 

 

 

 

< 런원스부팅으로 사용하기 >

 

 

1. RunOncePE-Maker.vbs 만 수정 사용합니다.

   바탕화면우메뉴 레지,RunOncePE-run.vbs 불필요

2. RunOncePE-Maker.vbs 수정

 

스크립트시작

 

'--------------

If WScript.Arguments.length =0 Then

  Set objShell = CreateObject("Shell.Application")

  objShell.ShellExecute "wscript.exe", Chr(34) & _

  WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1

Else

'--------------

Const BcdLibraryString_Description = &h12000004

Const BcdLibraryString_DisplayOrder = &h24000001

Const WindowsImages = &h10200003

Const LegacyImages = &h10300006

Const BcdLibraryDevice_ApplicationDevice = &h11000001

Const BcdLibraryDevice_ApplicationPath = &h12000002

Const BcdBootMgrDevice_BcdDevice = &h21000022

Const BcdOSLoaderDevice_OSDevice = &h21000001

Const strComputer = "."

 

'-------------------------------------------------------------

Set WshShell = CreateObject("WScript.Shell")

Set FSO = CreateObject("Scripting.FileSystemObject")

curDir = FSO.GetParentFolderName(WScript.ScriptFullName) 

strSystem64 = WshShell.ExpandEnvironmentStrings("%SystemRoot%") & "\System32\"

Set objWMIService = GetObject("winmgmts:" _

 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set objStoreClass = GetObject("winmgmts:{(Backup,Restore)}\\" & _

 strComputer & "\root\wmi:BcdStore")

OSArchCheck = WshShell.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE")

If OSArchCheck = "x86" Then

strSystem86 = strSystem64

Else

strSystem86 = WshShell.ExpandEnvironmentStrings("%SystemRoot%") & "\SysWOW64\"

End If

 

'-------------------------------------------------------------

'Const ForReading=1, Const ForWriting=2, Const ForAppending=8, 

'                              Const OverwriteIfExist=True(덮어쓰기(없으면생성))

Set dFile = FSO.OpenTextFile(curDir & "\bcd-description.txt", 2, True)

objStoreClass.OpenStore "", objStore

objStore.EnumerateObjects WindowsImages, colObjects

For Each objObject in colObjects

      objObject.GetElement BcdLibraryString_Description, objElement

      dFile.Write (objElement.String & vbCrLf)

Next

      dFile.Close

 

'-------------------------------------------------------------

'-------- InputBox(내용[, 제목][, 입력칸에_기본값][, x축좌표][, y축좌표][, helpfile, context])

'-------- InputBox "12345", "숫자입력기", "1",2000, 2000

On Error Resume Next

strData = curDir & "\bcd-description.txt"

 

If FSO.FileExists(strData) Then

  Set ts = FSO.openTextFile(strData,1)

  Dim strLine(9)

  Do Until ts.AtEndOfStream

    i = i + 1

    strLine(i) = ts.ReadLine

    strMsg = strMsg & i & ".  " & strLine(i) & Chr(13) & Chr(13)

  Loop

  ts.Close

 

  x = inputbox(strMsg, "복구용 PE 선택" , "   키보드로 숫자 입력 후 엔터   ")

  If IsNumeric(x) Then x = CByte(x)

  If x <= i Then

    strTXT = strLine(x)

  Else

 

    WScript.Echo "선택 범위를 벗어나 종료합니다."

    WScript.Quit

  End If

 

End If

FSO.DeleteFile strData, True

 

 

Set oFile = FSO.CreateTextFile(curDir & "\openGUID.cmd", True)

oFile.WriteLine "@echo off"

oFile.WriteLine "pushd ""%~dp0"""

oFile.WriteLine "if not defined in_subprocess (cmd /k set in_subprocess=y ^& %0 %*) & exit )"

oFile.WriteLine "setlocal enabledelayedexpansion"

oFile.WriteLine "for /f ""tokens=1,2,3"" %%a in ('bcdedit /enum OSLOADER') do ("

oFile.WriteLine "if %%a EQU identifier set GUID=%%b"

oFile.WriteLine "if %%a EQU description IF %%b EQU " & strTXT & " echo !GUID!>""%~dp0copyID.txt"""

oFile.WriteLine ")"

oFile.WriteLine "exit"

oFile.Close

 

WshShell.Run chr(34) & curDir & "\openGUID.cmd" & Chr(34), 0, True

 

'-------------------------------------------------------------

Set gFile = FSO.OpenTextFile(curDir & "\copyID.txt")  

strText = gFile.ReadLine

gFile.Close

 

strDir = strSystem64 & "PE_Booting.vbs"

If not FSO.FileExists(strDir) Then

Set outFile = FSO.CreateTextFile(strDir, True)

outFile.WriteLine "Set wshShell = WScript.CreateObject(""WScript.Shell"")"

outFile.WriteLine "wshShell.Run ""bcdedit /bootsequence " & strText & """"

outFile.WriteLine "wshShell.Run ""wmic os where """"status='ok'"""" call reboot"", 0, True"

outFile.Close

Else

End If

 

'-------------------------------------------------------------

strOPEN = curDir & "\openGUID.cmd"

strID = curDir & "\copyID.txt"

 

FSO.DeleteFile strOPEN, True

FSO.DeleteFile strID, True

 

 

WshShell.Run chr(34) & strDir & Chr(34), 0, True

 

'-------------------------------------------------------------

End If

 

 

스크립트끝

 

 

번호 제목 글쓴이 조회 추천 날짜
[공지] 강좌 작성간 참고해주세요 gooddew - - -
3641 윈 도 우| %카리스마조%님 PE를 UEFI 부팅 USB만들기 [12] 하늘은높고 1581 8 02-24
3640 소프트웨어| qBittorrent 클라이언트 설정법..(초보분들만...) [7] 이현우 1222 9 02-23
3639 소프트웨어| Total Commander에서 클라우드 접속하기 [2] VenusGirl 765 8 02-22
3638 하드웨어| 모니터 화면 해상도가 흐릴때... [7] FSMG 2185 5 02-21
3637 윈 도 우| rsimagex,gimagex에서 vmware map한 드라이브 안보일때 [4] 봉냐 380 2 02-21
3636 윈 도 우| WIM파일로 PE 실행 해보기 [6] 하늘은높고 1379 17 02-20
3635 윈 도 우| RunOnceBoot VBScript Only [20] 지후빠 699 10 02-20
3634 윈 도 우| EasyBCD를 사용한 PE부팅 방법 [9] 하늘은높고 892 11 02-20
3633 윈 도 우| 왕초보가 PE만들기 도전 [10] 하늘은높고 1372 14 02-19
3632 윈 도 우| 기본프린터로 인쇄 깔끔버전 + PrintQueueCleaner [18] update 레마클로 2284 14 02-18
3631 소프트웨어| Win10XPE27 파일을 USB에 넣는 과정입니다. [43] 하늘은높고 3278 36 02-16
3630 소프트웨어| 크롬 깔끔하지만 복잡한 설치 누군가 1669 5 02-16
3629 윈 도 우| PrincePE_V19 [50] %카리스마 3634 64 02-15
» 윈 도 우| Runonce Boot PE 2 (수정) [18] 레마클로 1957 16 02-15
3627 윈 도 우| 윈도우 10 작업표시줄 날짜 모양 바꿔보기 [11] 하늘은높고 2085 7 02-14
3626 소프트웨어| [Tip] 종류별 유용한 윈도우 프로그램 총정리 [32] Drivel 3015 32 02-13
3625 윈 도 우| 탐색기창.익스.크롬창 등등... 원하는자리 배치 [3] 메인보드 1232 12 02-13
3624 윈 도 우| PE 드라이버 통합하기 V1.03 [41] 히이이잌 3283 48 02-09
3623 모 바 일| [Tip] QR 코드로 와이파이 SSID와 비번 입력하기 [4] asklee 1146 8 02-09
3622 윈 도 우| PE DPI 조절 스크립트 V1.03 [15] 히이이잌 1086 17 02-09
XE1.11.6 Layout1.4.8