제목 : Reflect에 사용되는 suk님 bat를 따라하여 보았습니다..
왕초보프로그램마다 각자의 특성이 있죠...Reflect는..좀 별다른 특성이 있기는 합니다..
PE에서 Y: 마운트시 이것을 방어하기 위해서 사용되는 레지 히이브 방식에서 suk님 bat 파일이 애용이 되고 있습니다
suk님 작품의 경우..이쁘게(?) 보이려고 다이어트하지 않은 보통 PE를 기준으로 만들어진 작품이어서..다이어트가 된 초저용량 PE에서는..
작동하지 않은 기능들이 있습니다
다이어트 된 PE에서 Macrium Reflect가 실행될때 필요한 dll들을 추가가 되지만 보조 프로그램인 bat에 관련된 파일은 따로 확인을 하지 않는 편입니다
그래서 bat에서 필요한 파일이 어떤것인지 알지 못하는 경우가 있습니다.. 이런 경우 bat 파일이 정상작동하지 않아서 사용하는 pe에 따라서 어떤분은
잘되시고..어떤 분을 안되어서..왜 나는 안되지 하는 궁금증이 생기기도 합니다
아래는 sub님 bat 파일 내용입니다
@shift /0
@echo off
cd /d %~dp0
setlocal enabledelayedexpansion
@if not exist reflect_원본.exe (
>"%tmp%\msg.vbs" echo.Msgbox "원래 있었던 reflect.exe을 reflect_원본.exe으로 바꾸시고 실행하세요", vbSystemModal+ vbInformation, "알림창"
"%tmp%\msg.vbs"
exit
)
set list=0
for /f "tokens=*" %%a in ('"tasklist | find /i "reflect""') do set /a list+=1
if "%list%" geq "2" (
>"%tmp%\msg.vbs" echo.Msgbox "reflect.exe가 완전히 종료되지 않았습니다. 잠시후 다시 실행하세요", vbSystemModal+ vbInformation, "알림창"
"%tmp%\msg.vbs"
exit
)
@if not exist reflect.cfg (
>"%tmp%\msg.vbs" echo.Msgbox "reflect.cfg가 없습니다. 경우에 따라서 한영 전환 문제가 있습니다", vbSystemModal+ vbInformation, "알림창"
"%tmp%\msg.vbs"
)
set load=0
if /i %systemdrive%==X: (set C=C D& set X=Y) else (set C=D& set X=X Y)
for %%a in (%C% E F G H I J K L M N O P Q R S T U V W %X% Z) do if exist %%a:\Windows\System32\config\system (set /a load+=1® load HKU\Macrium_Reflect_!load! %%a:\Windows\System32\config\system)
:Macrium_Reflect
robocopy . %systemdrive%\boot reflect.cfg
start reflect_원본.exe
if %load%==0 goto :eof
ping localhost /n 15
for /L %%a in (1,1,%load%) do reg unload HKU\Macrium_Reflect_%%a
exit
위의 3개 부분이 다이어트가 많이된 왕*님 작품에서 작동하지 않는 부분입니다
1. 프로그램을 실행하기 전에 친절하게 체크를 하고 메세지를 보여주는 부분에서 vbs가 작동을 합니다..이런 메세지를 보여주는것은 사용자가 상황을
판단할수 있는데 도움이 됩니다.아쉽게도 vbs가 설치되지 않은 PE에서는 작동을 하지 않습니다
2. 왕*님 작품에는 reflect가 이미 실행중인지를 체크하는 tasklist.exe가 없습니다..그래서 중복실행을 체크할수가 없습니다
suk님 bat 파일을 최대한 활용하는 방법으로 진행을 하면서 tasklist.exe, tasklist.exe.mui 파일을 추가했을때에도 실제 작동을 하지 않았습니다
추가로 다른 파일이 필요한가 봅니다..
3. reflect.exe 실행후 대기 시간에 pin.exe를 사용하고 있습니다..인터넷이 안되는 pe에는 보통 없는 파일입니다..그래서..대기시간을 아무리 길게
넣어도 작동하지 않습니다.
이 ping.exe 파일이 없어서..다른 pe에서는 잘되는데 안되는 pe가 있는것입니다..pe에 항상 있는 파일이 있죠...pecmd.exe를 활용하시면 됩니다
지난 사용기에서 임시방법이라고 말씀 드렸던것은 pecmd.exe를 활용하는것이었습니다..
위의 3가지 기능을 대신할수 있는것들을 찾아 보았었습니다..다른분의 도움을 받기도 했습니다만...vbs를 활용하는것은 당연히 안되고 cmd에서 많이
사용하는 nircmd.exe는 활용할수 있는 방법이 있기는 하였습니다만..nircmd.exe에서 리턴해주는 결과 값이 없어서 도움말만 열심히 찾아보다 포기를
하였습니다..
대신할것이 없어서 결국 오토잇으로.1.2,3번 기능을 대신하신 하도록 하여 보았습니다...이 오토잇은 바이러스 검출이 되는것이 문제죠.
초저용량 PE에서 suk님 bat를 활용하기 위해서 보조 프로그램을 사용하였구나 하는 정도로 보아 주십시요
1. 항상 많은분들을 위해서 베풀어 주고 계시죠..이런뎅**님께서 선물로 주신 Win10XPE98_19042.610_x64 작품입니다..선물 감사합니다
테스트를 위해서..기본 프로그램은 삭제를 한 상태입니다.. 이 PE의 경우 CDUsb.y가 있어야 Y: 드라이브로 마운트가 되기 때문에 미리 파일을
추가해 놓은 상태입니다...Y: 마운트가 잘 되었습니다
2. PE에 포함된 MacriumReflect.exe로 실행을 하여 보았습니다..이번에 업데이트가 되었다고 합니다..
Y: 방어가 잘 되었습니다...
3. 탐색기에서도 확인을 하였습니다..
4. 단일파일인 MacriumReflect.exe가 아래의 경로에 압축이 풀려 있습니다...모르시는 분들도 계시지만..어떤 용도인지 아시는 분들도 많으시죠..
ReMount.exe 파일이 포함이 되어 있네요..저는...처음에 아니..이 파일이 왜있지 하는 생각이 들었습니다.
5. reflect.cmd 파일에서 구분을 나누어서 살펴보았습니다...4번도 있는데 해상도가 1024*768이어서 안보입니다
1번은..pecmd.exe 경로를 변수에 저장하는것 같습니다..그런데..이 단일파일이 만들어졌을때 x64로 실행되도록 만들어 진것 같습니다
x64 전용 PE에서 잘 실행이 되었습니다..Macrium Reflect도 x64 프로그램이어서 x86 pe에서는 압축 자체가 풀릴 필요가 없어서..아래 기능은
없어도 되지 않을까 하고 개인적인 생각을 해보았습니다
2번은 특정 경로에 있는 레지를 저장하고 system파일을 하이브 하는 내용입니다
3번이 중요한 부분이죠..ping.exe 파일이 있는 경우에는 ping 파일로 대기를 하고 pecmd.exe 파일이 있는 경우에는 pecmd.exe 파일로 대기를
합니다..원래 cmdpe였던것이 아니면..보통 pe에는 pecmd.exe가 들어가 있어서..따로 구분없이 pecmd.exe를 활용해도 될것 같기도 합니다
오히려 저용량 pe에서도 pecmd.exe보다 ping.exe가 없는 경우가 더 많기는 합니다..
6. reflect.cmd 맨 마지막에 ReMount.exe가 실행이 되고 있습니다....ping.exe나 pecmd.exe에서 3초를 대기하는데..혹시..이 시간이 부족하거나..
실제 적용이 되지 못하는 경우를 대비해서 ReMount.exe가 실행이 되고 있나 봅니다
reflect.cmd에서 가장 문제가 되는 부분이 대기를 하는것이죠..몇초나 대기를 해야할지 정할수가 없습니다..컴퓨터 상황에 따라서..이 시간은 제각각
입니다..그래서 고정된 시간을 주는것은 확실한 방법이 아닙니다..지난 사용기에서 비공개로 pecmd.exe로 대시시간을 주면서 임시라고 말씀을
드렸었습니다.
7. ReMount.exe 파일은 아래 2가지 경우에 Y: 마운트를 해주고 있습니다 CDUsb.? ReMount_?.* 두개 파일이 필요합니다.. ?에는 원하시는 알파벳
이 들어가 있을것입니다.. 모든 분들이 이 파일을 테그로 사용하고 않은다는것이 조금 문제가 되기는 합니다..
LetterSwap.exe에서 저처럼 Backup 폴더를 사용하거나..프로그램이 들어가 있는 PETools 폴더등을 테그로 사용하는 경우..이 ReMount.exe는
의미가 없게 됩니다..
프로그램이 업데이트 된 경우 꼭 필요한 부분에 대해서는 설명이 있어야 활용을 할수가 있죠...ReMount.exe 파일의 경우 단일파일에 포함이 되어서
실행되지만..어떤 경우에 작동한다는 설명이 없어서..단일파일을 다운 받으셔서 사용하시는 분 대부분이 이런 내용에 대해서 전혀 알지 못해서 실제
활용을 못하는는 경우도 많으실것입니다...업데이트시에 좋은 기능이 추가되었다면 잘 활용할수 있도록 최소한의 설명이 있으면 좋을것 같습니다
8. 아쉽게도 ReDeploy.exe가 구버전입니다... 사용기란에 단테*님께서 소개하여 주셨던 pe에서 파일을 가져오던지..아니면 직접 추출해야 해야 합니다
9. 이런뎅**님께서 선물로 주신 Win10XPE98_19042.610_x64 작품에 아래의 체크디스크 프로그램이 들어가 있네요..이 프로그램을 서기다님께서 영문을
사용하고 있으실때 제가 컴파일헤 드렸던 것입니다..제가 컴파일 할때 아이콘을 무료 사이트에서 다운 받았던것 같습니다.아니면..구글에서 검색을
해서 다운 받아서 사용을 했을것입니다..이 아이콘이 좀 그렇습니다
아래 보시면 러시아 파티션 프로그램의 아이콘과 같은 아아콘입니다..러시아 아이콘은 가운데 색연필이 있기는 합니다..
2개의 프로그램이 아래처럼 바탕화면에 같이 있으면 같은(?) 아이콘이어서 구분이 잘 되지 않습니다..체크디스크 아이콘은 다른 이쁜것으로 교체를
하는것이 더 좋을것 같죠.....어쩌다 다운 받은 아이콘이 러시아 파티티션 프로그램과 같네요
10. 러시아 파티션 프로그램이 2종이 있습니다..이름은 다른데 모습은 비슷합니다.. 이 러시아 파티션 프로그램을 사용하는 이유는 아래에 있습니다
AOMEI Partition Assistant 프로그램을 파티션 크기를 조정했던것 같습니다..이것저것 눈에 보이는것을 사용하고 있어서....
오른쪽 끝에 보시면..몇 MB 짜리 빈공간이 있습니다..이렇게 아주 작은 공간이 남는 경우가 종종 있습니다...제가 잘못했을수도 있을것입니다
러시아 파티션 프로그램은..이런 작은 빈공간이 생기지 않아서 활용을 하고 있습니다
11. 보통 이렇게 늘려서 조정을 하죠..저도 이렇게 했었는데..빈공간이 있네요..
12. 작업이 잘 되었습니다.
13. 왕*님의 초저용량 PE로 부팅을 하였습니다. SysWOW64 폴더가 없는 전용 x64 PE 입니다.
14. Y:로 마운트가 되어 있습니다..
15. 저는 테그파일을 사용하지 않고 백업파일이 저장되는 Backup폴더를 테크로 활용을 하고 있습니다..
16. 이런뎅**님께서 선물로 주신 Win10XPE98_19042.610_x64 작품에 있는 MacriumReflect.exe 파일을 실행하였습니다.
아래처럼 메세지가 나옵니다.. MacriumReflect.exe 파일은 x64로 실행되도록 단일파일이 만들어져서 아래처럼 Macrium Reflect가 실행이
되었습니다만..ReMount.exe는 단일파일을 만들때 x86으로 실행되도록 만들어져서 아래처럼 실행이 되지 못하였습니다
ReMount.exe는 x64로 실행되도록 만들면 그만이죠..
17. ReMount.exe가 실행되지 못하였지만..Y: 드라이브 방어는 성공적으로 되었습니다..Y: 드라이브 방어에 문제가 없다면...ReMount.exe가 있을 필요
가 없을것 같습니다.
18. MacriumReflect.exe가 x64 전용 PE에서 실행이 되는것을 보면 x64로 만들어진것이죠..그러면..system32 폴더에 있는 pecmd.exe를 실행하는데
전혀 문제가 없어서..pecmd.exe 경로를 설정하는 소스는 필요가 없을것 같아서 1번에 처럼 삭제를 하여 보았습니다
대기시간도..사용하는 거의 모든 pe에 pecmd.exe가 있어서...ping.exe를 체크 할 필요없이 바로 pecmd.exe를 실행하는것을 하여 보았습니다
Y: 마운트 방어가 잘되면.,.ReMount.exe가 필요없기 때문에 ReMount.exe를 뻬보았습니다
아래의 경우 Y: 마운트 방어가 성공하지 못한다면 대시시간이 문제일것입니다..이 대기시간을 컴퓨터마다 달라서 최적화가 안됩니다
최상의 컴퓨터에서는 시간이 남는 경우도 있을거고..구닥다리 컴퓨테에서는 시간이 적을수도 있습니다
맨 처음 suk님께서 bat 파일을 소개해주셨을때부터 대기시간은 어쩔수 없이 안고 있는 불안요소였을것입니다
원래 suk님 소스에 있는 tasklist.exe를 이용해서 cmd에서 대기시간 줄 필요없이 가능한것으로 생각을 했습니다
윈도우에서 다른 프로그램은잘 되는데..이상하게 Macrium Reflect 에서만 에러가 나네요..결국은 포기를 하고 오토잇을 활용을 하게 되었습니다
19. 대기시간을 넣은것 대신에 오토잇으로 된 보조프로그램을 사용하면서 suk님 작품에 있는 Macrium Reflect 중복실행 체크를 넣어서 아래처럼
중복실행시에는 메세지를 보여주도록 하였습니다.
20. 아래 화면이 보일때 Y: 마운트 된것이 윈도우에 사용하던 드라이브 문자로 되돌아 가는것 같습니다..
system 레지 파일이 하이브 되었다가 이 구간이 지나면..언하이브 하면 되죠.. 이 구간이 지나고 Macrium Reflect가 완전히 실행되면 하이브한
레지를 언하이브 하도록 하였습니다.
이렇게 하면..컴퓨터 마다 상황이 달라서 대시시간이 각각인것에 대한것을 신경 쓸필요가 없습니다..
cmd에서 모든것이 안되어서 어쩔수 없이 보조프로그램을 사용하지만 중복체크나..메세지등을 이 보조프로그램이 다 할수가 있다면..보조프로그램을
활용하는것이 더 이익일것 같습니다...
21. Y: 드라이브가 방어가 되었습니다..
22. 추가한 오토잇으로된 보조프로그램 입니다.
23. reflect.cmd 파일 내용입니다. 3개 구간으로 분리가 됩니다
1번 여기에서는 아래처럼 3가지를 체크를 합니다 단일파일이 pe용이어서 윈도우에서는 실행시 메세지를 보여주도록 하였습니다
윈도우 체크는 cmd에서 하고 메세지는 보조프로그램인 ReflectCheck.exe 에서 보여 줍니다
윈도우가 7~10일때 실행되는 부분도 체크는 cmd에서 하고 메세지는 ReflectCheck.exe 에서 보여 줍니다
Macrium Reflect 중복 실행은 ReflectCheck.exe 에서 검사하고 메세지까지 보여줍니다...cmd는 리턴값을 받아서 있으면 바로 종료합니다
2번 레지하이브 전에 Reflect.cfg 파일을 복사하도록 하였습니다...
3번 레지 하이브 하고 Macrium Reflect 가 실행이 완료될때가지 ReflectCheck.exe가 대기하도록 합니다. Macrium Reflect 가 실행이 완료되면
ReflectCheck.exe가 실행이 종료되어서 언하이브를 진행을 합니다.. 대기시간에 대해서 고민할 필요가 없습니다
suk님 소스에 있는 if %load%==0 goto :eof 부분을 활용하지 못했네요.....하이브 한것이 없으면 괜히 대가할 필요가 없는데요...
아니 이렇게 중요한것이 이제서야 눈에 보이네요. 추가를 해야겠습니다. 추가할때 개인적인 레지도 추가를 해야겠습니다
24. 이왕이면 다홍치마죠...단일파일을 구성하는데 구버전은 있을 필요가 없어서 ReDeploy.exe도 같은 버전으로 넣었습니다
25. 피해갈수 없는 높은산이죠...오토잇으로 몇줄 되지도 않은데 4개가 검출이 되었습니다..주로 사용하는 바이러스 프로그램이 아니어서 다행입니다
26. 단일파일로 만든 것을 검사해 보았습니다..아니 검출이 2개 밖에 나오지 않네요...더 나오는것이 아니라 줄어 들때도 있나 봅니다..
27. 마무리
이런뎅**님께서 선물로 주신 작품에 있는 업데이트된 MacriumReflect.exe도 실행해서 이것저것 살펴보고 Macrium Reflect 실행시 Y: 마운트된것을
방어하기 위해서 사용되는 suk님 bat파일이 저용량 pe에서는 실행되지 않은 부분들이 있어서 대체 방법을 찾아지만 아쉽게도 찾지 못해서 결국은
오토잇으로 된 보조프로그램을 활용하여 보았습니다
PE가 한개만 존재한다면...Macrium Reflect 단일파일을 만드시는 분들이 좀 편하게 만드실수가 있으시지만 아쉽게도 PE는 다양한 종류가 있고
Y: 마운트를 하는 테그 파일도 각각의 취향이나 컴퓨터 상황에 따라서 다양하게 활용을 하면서 단일파일을 만드시는 분들을 머리 아프게 하는것
같습니다
Macrium Reflect 실행시 Y: 마운트 하는것을 방지하는것을 cmd파일 하나만으로 방어하기에는 PE 종류가 많고 컴퓨터 상황에나 취향에 따라서
다양한 환경에 대처한다는것은 조금 부족함이 있는것 같습니다
오래전이죠...사랑과평화님 작품을 피트백 하신분 때문에..Macrium Reflect 실행시 Y: 마운트가 문제가 되었었는데...아직까지 이 부분에 대해서는
좀더 다양한 아이디어가 나오지를 못하는것 같습니다
아마...고수님들께서는 관심이 없어서 프로그램을 만들어 주시지 않는것일수도 있고..어쩌면..Macrium Reflect를 사용하시는 분들이 적을수도 있죠
PE에서 Y: 마운트를 활용하시는 분들이 많지 않으셔서 그럴수도 있을것 같습니다
결국 단일파일을 만드신는 분들의 고민만 깊어질것 같습니다
저는 Y: 마운트 된것을 방어하는데 system 레지파일 하이브 대신 다른 방식을 사용하고 있습니다..그래서 단일파일에서 신경쓸 필요가 없어서 그동안
이 부분에 대해서는 이렇게 하면 좋은데 라는 생각만 했었습니다...이번 기회에 suk님 bat를 이렇게 따라하여 보았습니다
결국 저용량 PE에 활용하기 위해서 오토잇으로 된 보조 프로그램을 사용했네요..
이런 방식으로 Y: 마운트를 방어하는 방법도 있구나 하는 정도로 보아 주십시요
고수님들이시라면 좀더 좋은 방법이 있으실것 같습니다
새로운 한주가 시작되었습니다
웃음이 가득한 일만 있으시길 바랍니다
고생하셨습니다.