어떻게 특정 사용자에대해 쉘을 변경하는가에서 필자는 선택된 사용자에대해
쉘을 변경하는 방법을 설명했다.
동일한 기법을 사용해서
쉘이 시작되기 전에 프로그램을 실행할 수 있다(쉘과 어떠한 상호 동작도 피하기위해).
Explorer.exe와 같은
쉘을 종료하고 다음 레지스트리를 편집한다.
HKEY_LOCAL_MACHINE\Software\microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit
Userinit을 두번 클릭하고
USERINIT,NDDEAGNT.EXE.....로 시작하는 문자열을
YourOwn.exe,NDDEAGNT.EXE.....나
YourOwn.bat,NDDEAGNT.EXE.....로 변경한다.
%SystemRoot%\System32 폴더에 자신의 EXE 파일이나 BAT 파일을 둔다.
USERINIT가 쉘 프로그램을 실행하므로 자신의 프로그램이나 배치 파일의 끝에서
USERINIT.EXE를 실행해야 한다.
Explorer.exe는 Windows NT 4.0의 표준쉘이며, 탐색기는 두가지 모드로 동작한다.
브로우저 모드
쉘 모드(바탕화면, 작업막대, 시작버튼 관리)
USERINIT가
탐색기를 실행시킬 때
탐색기는 어떠한 사본도 실행되고 있지 않은지와
탐색기가 쉘로되어있는지를 검사한다. 이 두개의 조건이 참이면
탐색기는 쉘 모드로 시작된다.
예: (레지스트리를
USERINIT.BAT,NDDEAGNT.EXE.....로 변경한 경우)
[USERINIT.BAT]
@echo off
REM DOA USERINIT.BAT
call %SystemRoot%\System32\DelTemp.bat
%SystemRoot%\System32\Userinit.exe
exit
여기서 %SystemRoot%\System32\DelTemp.bat는 다음과 같은 내용을 포함한다.
[DelTemp.bat]
@echo off
RD /q /s C:\Temp
MD C:\Temp
주의:
호출한 배치파일내에서는
Exit 명령을 사용하지 마라.
이제 자신의 EXE나 BAT 파일은
쉘과 상호 동작없이 실행될 것이다.