기 타 pecmd.exe 의 "=" 옵션을 테스트 하여 보았습니다
2023.10.04 11:57
pecmd.ini에 보시면 프로그램을 실행할때 ! = @ 옵션들을 사용하시는것을 보셨을것 같습니다
이중에서 "=" 옵션의 경우 실행하는 프로그램이 모든 작업을 완료하고 종료 될때까지 다음 작업을 하지 않는 옵션입니다
저의 경우 탐색기 실행전에 reg 등을 등록해야 하는경우에 활용을 합니다
아래는 Lightning님 22621.1631 PE 작업을 하면서 "="가 사용이 되고 있지만 실제는 "=" 의미가 없는 부분이 있어서 정리를 하여 보았습니다
1) Lightning님 22621.1631 PE 한글화 버전 원본 pecmd.ini 입니다
ENVI^ EnviMode=1
EXEC !%SystemRoot%\System32\AU3381.exe %SystemRoot%\System32\LetterSwap.au3 /bootdrive %temp%\LetterSwap.log /IgnoreLetter XY /auto
//INIT I
EXEC @%SystemRoot%\System32\wpeinit.exe
SHEL %SystemRoot%\explorer.exe
Disp
EXEC -hide "%ProgramFiles%\WinXShell\WinXShell.exe" -luacode "wxsUI('UI_WIFI',nil,' -theme dark -hidewindow')"
REGI #HKLM\SYSTEM\Setup\SystemSetupInProgress=0
EXEC !IMEReg.cmd
EXEC "%SystemRoot%\Drvindex.exe" -y
FORX !\PETOOLS\loadtool.wcs,MyIni,1,LOAD %MyIni%
EXEC !%SystemRoot%\System32\AU3381.exe 에 "=" 옵션이 없이 ! 숨김 옵션만 있습니다.. 이 명령이 완성이 되기 전에 다른 작업이
실행이 되어서 FORX !\PETOOLS\loadtool.wcs,MyIni,1,LOAD %MyIni% 이 부분이 탐색기 실행후 조금 아래에 있습니다
2) 껄렁쇠님 작품에 있는 pecmd.ini 내용입니다
ENVI^ EnviMode=1
EXEC =!%WinDir%\System32\AU3381.exe %WinDir%\System32\LetterSwap.au3 /bootdrive Y:\CDUsb.y %temp%\LetterSwap.log /IgnoreLetter XY /auto
//INIT I
EXEC @%SystemRoot%\System32\wpeinit.exe
SHEL %SystemRoot%\explorer.exe
Disp
EXEC -hide "%ProgramFiles%\WinXShell\WinXShell.exe" -luacode "wxsUI('UI_WIFI',nil,' -theme dark -hidewindow')"
REGI #HKLM\SYSTEM\Setup\SystemSetupInProgress=0
EXEC !IMEReg.cmd
HOTK #120,kill explorer.exe `Explorer 새로 고침 (F9)
HOTK #122,exec %SystemRoot%\SH-TaskBar.exe `작업 표시줄 전환 (F11)
//LINK %Programs%\iSCSI 초기자 프로그램,%SystemRoot%\System32\iscsicpl.exe
//LINK %Programs%\Explorer 새로 고침 (F9),pecmd.exe, kill explorer.exe,shell32.dll#238
EXEC regedit /s "%ProgramFiles%\7-Zip\7z.reg"
EXEC regedit /s "%SystemRoot%\Notepad2.reg"
LOAD #202
EXEC !SC Start MSiSCSI
EXEC !SC Start W32Time
EXEC !SC Start WebClient
FORX !\PETOOLS\loadtool.wcs,MyIni,1,LOAD %MyIni%
TEAM FILE %public%\Desktop\desktop.ini|FILE %Desktop%\desktop.ini
ENVI @@DeskTopFresh=1
EXEC =!%WinDir%\System32\AU3381.exe 옵션에 "=!" 옵션이 적용이 되었습니다...실제는 '=' 옵션이 작동하지 의미가 없습니다..
=는 AU3381.exe 프로그램에 적용이 됩니다.. AU3381.exe 는 LetterSwap.au3를 실행하고 바로 종료가 되기 때문에 LetterSwap.au3 가
실행되는 동안 다음 작업이 진행이 됩니다..그래서 탐색기가 바로 실행이 되어 바탕화면 사진이 빠르게 보입니다
3) 복구시스템에 사용하는 pecmd.ini 내용입니다
LOGS %WinDir%\Pecmd.log
LOGO %WinDir%\Web\Wallpaper\Windows\Logo.jpg
TEXT 시스템 초기화 중입니다... #0xFFFFFF L410 T630 $25:맑은 고딕
NUMK 1
SHOW -1:-1
EXEC @=%WinDir%\System32\LetterSwap.exe /auto /log %WinDir%\LetterSwap.log
` Backup 폴더의 Recovery.ini 로드
FORX !\Backup\Recovery.ini,iniFile,1, LOAD %iniFile%
EXEC %WinDir%\System32\FixScreen.exe
EXEC @!=%WinDir%\System32\IME\IMEReg.cmd
EXEC !%ProgramFiles%\Imagine\Imagine64.exe /assocext /regcontextmenu
` BIOS UEFI 부팅모드 빠른실행에 표시
EXEC =%ProgramFiles%\BootMode\BootMode.exe
SHEL %windir%\explorer.exe
EXEC @=%WinDir%\System32\LetterSwap.exe "@=" 옵션이 적용이 되었습니다 원래는 "=" 옵션만 주어도 됩니다
! 숨김 옵션이 적용되지 않은 pe가 있어서 @!= 옵션을 주었던 기억에 @=를 주었습니다
LetterSwap.exe 의 작업이 완료후에 FORX !\Backup\Recovery.ini,iniFile,1, LOAD %iniFile% 가 실행이 되게 하기 위해서 "=" 옵션을
준것입니다..Recovery.ini에서 레지등록을 하는 경우에 탐색기 실행전에 레지를 적용하기 위해서 입니다
= 옵션을 exe에 바로 주는 경우 적용이 되지만...따라서 적용이 되는 경우가 있고 EXEC =!%WinDir%\System32\AU3381.exe 처럼 한단계를
거치면 AU3381.exe에서 실행하는 프로그램이 종료될때까지 기다려 주는 기능이 없으면 "="가 작동하지 않습니다
저처럼 PE 부팅시에 ini를 찾아서 로드할때 reg 등을 등록하시고자 하시는 경우는 AU3381.exe를 거치지 않고 바로 드라이브 문자를 정렬해
주는 LetterSwap.exe 에 "=" 옵션을 주시면 원하시는 결과를 얻으실수 있을것입니다
탐색기 실행전에 LetterSwap.exe 에 "=" 옵션 주면 탐색기 실행이 늦어져서 바탕화면이 보이는 것이 늦게 보이는 단점도 있습니다
PE를 구성하실때 원하시는 방법에 따라서 "='를 적절히 활용하시면 될것 같습니다
1. EXEC =!%WinDir%\System32\AU3381.exe %WinDir%\System32\LetterSwap.au3 옵션일때 부팅 모습입니다
"=!' 옵션이 AU3381.exe 에 적용이 되어서 AU3381.exe에서 LetterSwap.au3 를 실행만 시키고 바로 종료가 됩니다 그래서 pecmd.ini에서
바탕화면이 바로 보입니다.. LetterSwap.au3 작업은 계속 되고 있을것입니다..
2. pecmd.ini 내용입니다..
3. EXEC =%WinDir%\System32\LetterSwap.exe LetterSwap.exe 파일에 "=" 옵션이 적용이 되어서 LetterSwap.exe 에서 드라이브
문자를 정렬을 마칠때까지 pecmd.ini에서 다음 작업이 이루어 지지 않습니다..부팅과정에서 배경사진이 보이는것이 한참 걸립니다
4. pecmd.ini 내용입니다.. LetterSwap.exe에 "=" 옵션이 적용이 되었습니다
5. LetterSwap.exe에 "=" 옵션을 바로 주는 경우에는 다음 작업에서 loadtool.wcs를 찾아 레지등을 등록해야 하는 경우에 아래처럼 활용을
하실수 있습니다.. 이 경우 바탕화면이 보이는것이 늦기 때문에 검정화면을 보지 않기 위해서 LOGO 명령을 사용하는것이 좋습니다
6. AU3381.exe를 통해서 au3 실행하는것이 한단게 더 거치는것이 싫어 "=" 옵션없이 LetterSwap.exe를 실행한 경우 부팅과정입니다
"=" 옵션이 없어서 바로 바탕화면이 보입니다
7. LetterSwap.exe 실행시에 "=" 옵션이 없습니다
8. 마무리
PE를 실행하시면 ! = 옵션을 활용하시는 경우가 있으실것입니다
"=" 옵션의 경우 프로그램에 바로 적용하는 경우 프로그램이 종료가 될때까지 다음 작업이 진행이 되지 않지만 중간에 다른 프로그램이
끼어 있는 경우 이 끼어든 프로그램에 적용이 되기 때문에 실제 "=" 옵션이 적용이 되어야 하는 프로그램에 "=" 옵션이 적용되지 않은 경우
가 있습니다
PE를 활용하실때 "=" 옵션을 주었는데 원하시는 결과가 나오지 않은다면..중간에 끼어 있는 프로그램이 있다면 배제를 하시고 실행 프로그램
에 직접 "=" 옵션을 주어 보시는것도 좋을것 같습니다
Server PE에서 아래 명령어를 주고 있습니다만..실제 '!="는 작동하지를 않는것 같습니다
EXEC !=%windir%\system32\SetWG.exe WORKGROUP
SetWG.exe 을 오토잇으로 만들어서 테스트를 하여 보았었습니다...WORKGROUP를 만들때 cmd가 실행이 되는 부분이 있어서 "="가 작동
을 하지 않는것 같았습니다
프로그램에 따라서는 "="가 작동하지 않을수도 있습니다..프로그램 자체에서 다른 프로그램을 실행할수 있습니다
이런 경우에 원하시는 결과가 나오지 않는다면 pecmd.ini에서 실행 위치를 바꿔어 테스트를 해보시는것도 좋을것 같습니다
이미 다아시는 내용일것 같습니다..참고 정도로만 보아 주십시요
오늘 하루도 즐거운 일만 있시길 바랍니다
수고많이하셨습니다.