윈 도 우 VHD 부트에서 부팅된 VHD 파일경로 추출과 활용 스크립트
2020.05.31 21:37
WTG 등 VHD 부팅에서는 부트환경에 따라 vhd가 있는 드라이브명이 수시로 바뀌지만
윈도우에서는 이를 확인할수 있는 환경변수를 별도로 제공하지 않습니다.
이때 vhd와 함께 portable을 함께 운영하는 경우 부트 환경에 따라 볼륨명이 바뀌어 난처할수 있는데
아래 스크립트는 실제 부트된 vhd 파일의 절대경로를 추출하여 드라이브명으로 Portable 변수를 등록해줍니다.
@echo off
net session >nul 2>&1 && (set previlige=/m &set reg_env="HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment") || (set previlige= &set reg_env=HKCU\Environment)
Call :GET_VHD
If %errorlevel% NEQ 0 Call :Msg %errorlevel% -FAIL- 16 &Goto :EOF
For /f "tokens=3" %%a in ('reg query %reg_env% /v VHD') do (set VHD=%%a)
set Portable=%VHD:~0,2%\Portable& :포터블 위치가 다르면 수정시 공백주의.
setx %previlige% Portable %Portable%
Call :Msg 0 -SUCCESS- 64
Goto :EOF
:GET_VHD
(echo $i=23; $j=20
echo Import-Module %SystemRoot%\DevicePath.psm1
echo If ^^^(-Not $?^^^) {Exit 100}
echo $dev=Get-Disk ^^^| Select-Object Location ^^^|findstr \Device\HarddiskVolume
echo If ^^^(-Not $?^^^) {Exit 101}
echo While ^^^($dev.SubString^^^($i, 1^^^) -eq '\'^^^) {$i++}
echo $dev1=$dev.substring^^^(0,$i-1^^^)
echo $dev2=$dev.substring^^^($i^^^)
echo $drv=DevicePath ^^^|findstr $dev1
echo If ^^^(-Not $?^^^) {Exit 102}
echo $drv=$drv.replace^^^($dev1, ""^^^).trim^^^(^^^)
echo $VHD=^^^(attrib ^^^($drv + '\' + $dev2^^^)^^^).substring^^^($j^^^).trim^^^(^^^)
echo reg add %reg_env% /v VHD /d $VHD /f ^^^|out-null
) | powershell -ExecutionPolicy bypass -NoLogo
echo.
Exit /b
:Msg
If %1==0 set msg=이 VHD 시스템은 %VHD% 파일로 부팅되었고 이의 값은 환경변수 VHD 와 Portable 에 등록되었습니다.
If %1==100 set msg=DevicePath.psm1 모듈을 %SystemRoot% 위치에 복사후 실행하세요.
If %1==101 set msg=이 시스템은 VHD 부팅된 시스템이 아닌것 같습니다
If %1==102 set msg=죄송합니다. VHD 파일을 추출해내는데 실패했습니다
(echo Add-Type -AssemblyName PresentationCore,PresentationFramework
echo [System.Windows.MessageBox]::Show^^^('%msg%' ,'%2', 0, %3^^^)
) | powershell >nul
Exit /b
위 내용을 .cmd로 저장후 콘솔창에서 실행 또는 서비스로 등록할수 있습니다.
서비스로 등록하면 부팅후 드라이브가 변경돼도 환경변수 값을 자동으로 갱신해줍니다.
파워쉘 함수가 외부모듈로 작성되어 첨부한 DevicePath.psm1 모듈을 Windows 폴더에 넣어줘야 실행됩니다.
먼저 Call :GET_VHD 명령으로 현재 부팅된 .vhd 경로를 추출 %VHD% 환경변수로 저장되며
이어 이 값의 첫자를 잘라 드라이브 문자로 빼서 %Portable% 변수를 조합 등록합니다.
실행시 관리자권한이 있으면 모든 사용자에 적용되는 시스템 변수로 저장되고 아니면 사용자 변수로 저장됩니다.
※ CMD에서 테스트후 서비스로 등록할때는 아래쪽 :Msg 블록내의 모든줄을 삭제하고 마지막 Exit/b만 남기면 됩니다.
※ 이 스크립트는 vhd 부트 환경에서 호스트 드라이브에 Portable 폴더를 보관한 경우에 유효합니다.
※ %Portable% 하위함목을 PATH에 추가할때는 set path=%PATH%;%%Portable%%\Programs 처럼 %기호를 두번써야 합니다.
※ Win 7에서는 함수실행 안되므로 사용불가 합니다.
바탕화면 또는 탐색기에서 Portable 경로상의 바로가기 생성은 우클릭 ->새로만들기 ->바로가기 순으로 하되 %Portable% 부터 적으면 되며
단 연결 프로그램 설정에서 %Portable% 적용이 직접은 안되고 먼저 바탕화면 같은데에 바로가기를 생성후 이것을 지정하면 잘 됩니다.
댓글 [2]
번호 | 제목 | 글쓴이 | 조회 | 추천 | 등록일 |
---|---|---|---|---|---|
[공지] | 강좌 작성간 참고해주세요 | gooddew | - | - | - |
4118 | 윈 도 우| 탐색기 내장명령어 우클릭에 추가하기 [12] | 지후빠 | 1997 | 23 | 02-27 |
4117 | 소프트웨어| FastCopy 토탈커맨더 연동 [14] | 슈머슈마 | 1519 | 6 | 02-26 |
4116 | 윈 도 우| 폴더 및 파일 숨기기 컨텍스트 메뉴 ( 수정 ) [19] | 슈머슈마 | 1444 | 9 | 02-26 |
4115 | 윈 도 우| PE에서 받는 파일을 안전 장소에 저장하기 [6] | PC_Clinic | 1503 | 14 | 02-24 |
4114 | 윈 도 우| Windows 11에서 시스템 요구 사항이 충족되지 않음 미리 알... [1] | VᴇɴᴜꜱGɪ | 1647 | 11 | 02-24 |
4113 | 윈 도 우| 파일 및 폴더 경로 복사 컨텍스트 메뉴 [3] | 슈머슈마 | 865 | 8 | 02-23 |
4112 | 윈 도 우| 인터넷에 연결하지 않고도 Windows 11 장치를 설정할 수 있... | VᴇɴᴜꜱGɪ | 1430 | 8 | 02-23 |
4111 | 윈 도 우| 이 앱이 디바이스를 변경할 수 있도록 허용하시겠어요? [4] | 하늘은높고 | 1365 | 10 | 02-22 |
4110 | 윈 도 우| (수정) Extd 한글 설명서 [명령_문법 부분에 대하여 자세한... [4] | 슈머슈마 | 845 | 6 | 02-21 |
4109 | 윈 도 우| [자작] Open the Folder - 우클릭 [10] | 배워요 | 1614 | 14 | 02-20 |
4108 | 윈 도 우| 배치파일로 원하는 날짜 포멧 조합하기 [6] | 지후빠 | 1549 | 11 | 02-17 |
4107 | 윈 도 우| PE에서 드라이버가 설치 되기위해 필요한 파일 [10] |
|
1658 | 8 | 02-17 |
4106 | 윈 도 우| 배치파일로 윈도 설정과 관계없이 일정한 날짜 얻기 [6] | 히이이잌 | 890 | 12 | 02-16 |
4105 | 기 타| RSImageX 기본 파일 구성 [19] | suk | 2641 | 33 | 02-14 |
4104 | 윈 도 우| WIM 우클릭 부팅 관련 메뉴 2부 [11] | 지후빠 | 2076 | 18 | 02-13 |
4103 | 윈 도 우| PE 네트워크 설정하는 방법 2편입니다. [4] | PC_Clinic | 1117 | 11 | 02-12 |
4102 | 윈 도 우| WIM(PE) 1회성 부팅; 우클릭 보내기 메뉴에 추가 [16] | 지후빠 | 2650 | 27 | 02-11 |
4101 | 윈 도 우| AdGuard 사용시 다나와 메뉴 폰트 깨지는 현상 [3] | damoa | 626 | 2 | 02-11 |
4100 | 소프트웨어| PE 바탕화면에 바로가기 기능 추가 초 간단 팁 [7] | 그루터기 | 948 | 9 | 02-11 |
4099 | 소프트웨어| 한글2022 원클릭 설치하기.......CraXicS님 덕분에 가능해... [4] | 밤이슬216 | 6549 | 12 | 02-07 |
안녕하세요~ 제가 찾던 내용 같은데요.. 잘 이해가 안되서 질문 좀 드릴께요..
usb에 vhd를 넣어서 데탑이나 노트북에서 부팅용으로 활용하고 있습니다.
Usb에 vhd 와 포터블 프로그램을 넣어서 vhd 윈도우 부팅시 어느컴퓨터에서든 포터블 프로그램을 연결해 쓸려고 하는데요
내장 디스크가 1~3개인 컴퓨터도 있다보니.. vhd를 품은 볼륨명이 계속 바뀌어 고정 드라이브(B)로 할려고 합니다.
적어주신 내용이 저와 맞는것 같은데.. 어떻게 하면 될까요?
내용을 다 적어주신거 같은데 이해를 못하겠네요...
밥상 차려주셨는데 밥까지 떠먹여 달래서 죄송합니다..