본문 바로가기

PE, ImageX, DISM

[윈도우 PE] 한글 윈도우 PE 4.0 이미지에 한글 IME 입력기 추가하기




윈도우 PE 에서 한글의 입력을 지원하려면?

시작하기 전에 먼저 이 글은 지난 [윈도우 PE] ADK - 한글 지원 윈도우 PE 4.0 기본 이미지 만들기 글의 연장 선상에 있습니다. 해당 글에서 설명한 작업들에 추가적으로 작업을 진행하는 것이기 때문에, 반드시 먼저 이전 글을 읽어보셔야 이 글을 이해하실 수 있습니다.

일단 지난 글에서 제작한 한글 윈도우 PE 4.0 기본 이미지는 오직 한글의 출력을 지원하기 위해 제작한 이미지입니다. 그래서 해당 이미지는 한글의 입력을 지원하지 않습니다. 한글 윈도우 PE 4.0 기반인 윈도우 8 (Pro) K 의 설치 미디어로 부팅해서 작업해보시면 아시겠지만, 이렇게 한글의 입력은 지원하지 않는 게 기본 형식입니다. 다르게 이야기하자면 한글의 출력과 입력은 별개의 문제라는 것이죠.



그렇다면 윈도우 PE 에서 한글의 입력은 어떻게 가능하게 만들까요? 우선 지난 글에서 Boot.wim 파일을 수정할 때 한국어 언어 팩과 폰트 팩을 추가하고 PE 환경의 기본 언어를 한국어로 변경했었죠. 간단하게 아래의 작업이었습니다. [* 명령에서 Boot.wim 파일을 마운트한 폴더의 위치와 패키지 파일의 위치는 지난 글을 기준으로 함]

dism /image:D:\PE\mount /add-package /packagepath:D:\PE\WinPE-FontSupport-KO-KR.cab
dism /image:D:\PE\mount /add-package /packagepath:D:\PE\lp.cab
dism /image:D:\PE\mount /set-allintl:ko-kr


위의 [한국어 언어 팩 + 한글 폰트 팩 + 한국어 설정] 이 세 가지 작업이 한글을 입력할 수 있는 환경의 기본 바탕이 됩니다. 즉, 위의 작업이 이루어지지 않은 영문 윈도우 PE 에서는 한글 입력을 구성할 수 없다는 거죠. 아무튼, 이제 이렇게 한글의 입력을 위한 기본 작업이 완료된 상태에서(쉽게 위의 작업을 진행한 후) 추가적으로 한글 IME 입력기를 추가해주어야 합니다. 즉, 지난 글에서 작업했던 것을 토대로 작업의 순서를 정리하자면 아래와 같이 되는 것이죠.

imagex /mountrw D:\PE\media\sources\boot.wim 1 D:\PE\mount
dism /image:D:\PE\mount /add-package /packagepath:D:\PE\WinPE-FontSupport-KO-KR.cab
dism /image:D:\PE\mount /add-package /packagepath:D:\PE\lp.cab
dism /image:D:\PE\mount /set-allintl:ko-kr



한글 IME 입력기 구성 추가



imagex /unmount D:\PE\mount /commit
imagex /export D:\PE\media\sources\boot.wim 1 D:\PE\boot.wim
copy /y "D:\PE\boot.wim" "D:\PE\media\sources\boot.wim"
......

대충 작업의 순서를 아시겠죠? 즉, PE 이미지를 처음부터 제작하실 거라면 지난 글의 기본 이미지 제작 과정 중간에 이번 글에서 설명하게 될 한글 IME 입력기 구성 추가 과정을 끼워 넣으시면 되는 겁니다. 간단하죠?

실제 작업은 다음 단락에서 알아보도록 하고, 아래는 위에서 설명한 것과 같은 과정을 거쳐 만든 한글의 입력을 지원하는 한글 윈도우 PE 4.0 기본 이미지입니다. 참고로 다운로드는 자동 다운로드 도구로 제공해드리며, 아래의 파일을 받아 실행하시면 자동으로 ISO 파일을 다시 다운로드하는 구조입니다. 원하시는 비트 버전을 다운로드 받으세요.

WinPE4x86_IMEKR.iso 자동 다운로드 도구.exe

 [md5 : AF6DAB5F5FFFD3E0837A831C4AC9B6DF]

WinPE4x64_IMEKR.iso 자동 다운로드 도구.exe

 [md5 : 5C0D69353C117CE25D99E0D94A1F25A8]
* 참고로 제공해드리는 MD5 해시값은 다운로드 완료된 ISO 파일의 해시값입니다. [HashTab 4.0 - 파일의 해시값 확인하기]




근데 제가 제공해드린 것과 같은 깨끗한 기본 이미지가 필요하신 분들도 계실테지만, 보통은 이미 자신에게 맞게 제작 완료한 한글 윈도우 PE 4.0 이미지를 가지고 있고, 이제 이러한 이미지에 추가적으로 한글 입력도 지원되도록 만들고 싶으신 분들도 많으실 겁니다.

그럼 그 모든 걸 다시 처음부터 제작해야 하나? 라는 의문을 가질 수도 있는데요. 그럴 필요는 없습니다. 그냥 이미 제작 완료한 한글 윈도우 PE 4.0 의 Boot.wim 파일을 빼와서 적절한 빈 폴더에 마운트하고, 이번 글에서 설명하는 한글 IME 입력기를 추가로 구성해준 후, 이렇게 수정한 Boot.wim 파일을 원래의 Boot.wim 파일과 교체하시면 됩니다.

이번 글에서는 이렇게 이미 제작 완료하여 사용 중인 한글 윈도우 PE 4.0 버전을 가지고 있고, 이를 한글 입력까지 지원되도록 수정하는 것을 기준으로 하여 작업을 설명해보도록 하겠습니다.






한글 윈도우 PE 4.0 에 한글 IME 입력기 설치하기

※ 작업 전 필독! 이곳에서 설명하는 작업은 윈도우 8 ADK 를 통해 제작한 한글 윈도우 PE 4.0 버전에서만 유효합니다. 더불어 관리자 그룹의 계정으로 로그온한 상태에서 작업을 진행해야 합니다. 참고로 윈도우 7 AIK 를 통해 제작한 한글 윈도우 PE 3.x 버전에서는 IME 의 구성이 다르기 때문에 사용할 수 없습니다. 글의 설명은 ADK 또는 ImageX.exe 의 준비가 완료되었다는 가정하에 진행하도록 하겠습니다.

일단 가장 먼저 작업을 원하는 한글 윈도우 PE 4.0 에 포함된 boot.wim 파일을 작업하기 편한 적당한 위치로 복사합니다. 그런 후 마찬가지로 적당한 위치에 빈 폴더를(글에선 K:\Mount) 하나 생성합니다.

다음으로 한글 IME 입력기의 구성 파일을 준비해야 하는데 이는 따로 제공되지 않고 설치된 윈도우 8 에서 추출해야 합니다. 그렇기 때문에 제가 미리 필요한 파일 및 작업을 도와줄 배치 파일을 준비했습니다. 아래의 파일을 다운로드하여 적당한 위치에 압축을 풀어 준비하시면 됩니다.



글에서는 K: 드라이브에 필요한 파일과 폴더를 모두 준비했습니다.



준비를 모두 마쳤으면 Boot.wim 파일을 빈 폴더에 마운트하고 한글 IME 입력기의 추가를 시작합니다.

01. ImageX 또는 Dism 도구를 통해 Boot.wim 파일(또는 원하는 WIM 파일)을 빈 폴더에 쓰기 가능 상태로 마운트 합니다. [* 일반적으로 1 번 이미지를 마운트]

imagex /mountrw K:\boot.wim 1 K:\Mount



02. 이미지의 마운트를 마쳤으면 다운로드한 WinPEIMEKR.cmd 배치 파일을 마우스 오른쪽 버튼으로 클릭한 후 관리자 권한으로 실행하여 작업을 진행합니다. 시스템 사양에 따라 작업에 다소 시간이 걸릴 수 있습니다.

Step1. 현재 작업 중인 Boot.wim 파일의 비트 버전을 선택.
Step2. Boot.wim 파일을 마운트한 폴더의 전체 경로를 입력.



03. 작업을 모두 마쳤으면 마운트된 폴더의 startnet.cmd (글에선 K:\Mount\Windows\System32\Startnet.cmd) 파일의 내용을 확인하여 아래와 같이 정상적으로 구문이 추가되었는지 확인합니다. 확인 후 다음 작업을 위해 반드시 관련 윈도우 탐색기 및 메모장을 종료합니다. [* 참고로 기존 startnet.cmd 파일은 startnet.org 파일로 백업되어 있습니다.]



04. 이제 ImageX 또는 Dism 도구를 통해 마운트했던 이미지 파일을 언마운트하고 변경된 내용을 저장합니다. [* 이 때 마운트된 폴더와 관련된 윈도우 탐색기 또는 관련 프로그램이 열려 있으면 작업이 실패합니다. 주의하세요.]



한글 IME 입력기의 추가를 모두 마쳤습니다. 간단하죠? 참고로 WIM 이미지 파일은 수정하게 되면 WIM 이미지의 특성상 약간 용량이 증가하게 되는데, 추가적으로 아래와 같이 Export 작업을 진행하여 이미지를 최적화해주시는 게 좋습니다.

imagex /export K:\boot.wim 1 L:\boot.wim


모든 작업을 마쳤습니다. 이제 기존에 사용하던 Boot.wim 파일을 방금 수정한 Boot.wim 파일로 대체하여 사용하시면 됩니다. 디스크(로컬, USB)에서 WIM 파일 단독으로 사용 중이었다면 그대로 교체하시면 되고요. ISO 이미지 파일로 가지고 있었다면 적당한 ISO 이미지 편집 프로그램을 사용하여 기존의 Boot.wim 파일을 방금 수정한 Boot.wim 파일로 교체하시면 됩니다. CD/DVD 상태로 가지고 있었다면 뭐 알아서 적당히 다시 만드시면 될 듯 하네요. ^^;;



아래는 이렇게 제작한 윈도우 PE 4.0 으로 부팅하여 한글을 입력해본 모습입니다. 정상적으로 한글이 입력되는 것을 확인할 수 있습니다. 참고로 한영 전환키는 한/영키 또는 오른쪽 Alt 키입니다.








한글 윈도우 PE 4.0 용 한글 IME 입력기 추가 작업의 이해

일단 이 글에서 작업에 사용한 WinPEIMEKR.cmd 배치 파일은 아래의 윈도우 PE 3.0 버전을 대상으로 하는 마이크로소프트사의 테크넷 문서를 기초로 하여 제작한 것입니다.



참고로 아무리 찾아도 윈도우 PE 4.0 버전용 IME 입력기에 대한 테크넷 문서는 없었습니다. 그런데 문제는 제가 확인해본 결과 윈도우 7 과 윈도우 8 의 IME 구성이 약간 달라졌더군요. 그래서 윈도우 PE 3.0 을 대상으로 하는 위 테크넷 문서의 배치 파일은 그대로 윈도우 PE 4.0 엔 적용할 수 없습니다. 위 테크넷 문서는 어디까지나 윈도우 7 AIK 를 통해 제작한 윈도우 PE 3.x 버전을 위한 것이니까요.

4.0 버전용 IME 입력기에 관련된 공식적인 테크넷 문서도 없고, 그래서 그냥 제가 직접 윈도우 7 의 IME 구성과 윈도우 8 의 IME 구성을 비교해보아 달라진 부분들을 수정하였습니다. 일단 아래는 테크넷에서 제공하는 윈도우 PE 3.0 버전용 한글 IME  입력기 추가하기 배치 파일 전문입니다.

echo Preparing IME folder for WinPE.
setlocal

set WinPEWinDir=<Path to Windows Directory of your WinPE image (for example, C:\winpe_x86\Windows)>
set IMEBinSrc=%windir%

md %WinPEWinDir%\IME
md %WinPEWinDir%\IME\IMEKR8
md %WinPEWinDir%\IME\IMEKR8\DICTS
md %WinPEWinDir%\System32\IME
md %WinPEWinDir%\System32\IME\IMEKR8
md %WinPEWinDir%\System32\IME\IMEKR8\DICTS
md %WinPEWinDir%\System32\IME\shared

rem Fonts folder
copy /y %IMEBinSrc%\Fonts\gulim.ttc %WinPEWinDir%\Fonts\gulim.ttc

rem SYSTEM32 folder (Cicero)
copy /y %IMEBinSrc%\System32\CTFMON.EXE %WinPEWinDir%\System32\CTFMON.EXE
copy /y %IMEBinSrc%\System32\MSUTB.DLL %WinPEWinDir%\System32\MSUTB.DLL
copy /y %IMEBinSrc%\System32\MsCtfMonitor.DLL %WinPEWinDir%\System32\MsCtfMonitor.DLL

rem DICTS folder
copy /y %IMEBinSrc%\IME\IMEKR8\DICTS\IMKRHJD.LEX %WinPEWinDir%\IME\IMEKR8\DICTS\IMKRHJD.LEX

rem SYSTEM32 folder
copy /y %IMEBinSrc%\System32\IMKR80.IME %WinPEWinDir%\System32\IMKR80.IME

rem IMEKR8 folder
copy /y %IMEBinSrc%\System32\IME\IMEKR8\IMKRAPI.DLL %WinPEWinDir%\System32\IME\IMEKR8\IMKRAPI.DLL
copy /y %IMEBinSrc%\System32\IME\IMEKR8\IMKRTIP.DLL %WinPEWinDir%\System32\IME\IMEKR8\IMKRTIP.DLL
copy /y %IMEBinSrc%\System32\IME\IMEKR8\DICTS\IMKRHJD.DLL %WinPEWinDir%\System32\IME\IMEKR8\DICTS\IMKRHJD.DLL

rem shared folder
copy /y %IMEBinSrc%\System32\IME\shared\IMEAPIS.DLL %WinPEWinDir%\System32\IME\shared\IMEAPIS.DLL
copy /y %IMEBinSrc%\System32\IME\shared\IMETIP.DLL %WinPEWinDir%\System32\IME\shared\IMETIP.DLL
copy /y %IMEBinSrc%\System32\IME\shared\IMJKAPI.DLL %WinPEWinDir%\System32\IME\shared\IMJKAPI.DLL
copy /y %IMEBinSrc%\System32\IME\shared\MSCAND20.DLL %WinPEWinDir%\System32\IME\shared\MSCAND20.DLL

rem Creating some batch files...
@echo @echo off > %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REGSVR32 /S %%WinDir%%\System32\MSUTB.DLL >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REGSVR32 /S %%WinDir%%\System32\MsCtfMonitor.DLL >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REGSVR32 /S %%WinDir%%\System32\IME\shared\IMETIP.DLL >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REGSVR32 /S %%WinDir%%\System32\IME\shared\IMEAPIS.DLL >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REGSVR32 /S %%WinDir%%\System32\IME\shared\IMJKAPI.DLL >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REGSVR32 /S %%WinDir%%\System32\IME\shared\MSCAND20.DLL >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REGSVR32 /S %%WinDir%%\System32\IME\IMEKR8\IMKRTIP.DLL >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REGSVR32 /S %%WinDir%%\System32\IME\IMEKR8\IMKRAPI.DLL >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REGSVR32 /S %%WinDir%%\System32\IME\IMEKR8\DICTS\IMKRHJD.DLL >> %WinPEWinDir%\System32\IME\IMEReg.CMD

@echo REG ADD "HKLM\Software\Microsoft\CTF" /v "StartOnNoTaskEng" /t REG_DWORD /d 1 >> %WinPEWinDir%\System32\IME\IMEReg.CMD

@echo REG ADD "HKLM\Software\Microsoft\IMEKR" >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD "HKLM\Software\Microsoft\IMEKR\8.0" >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD "HKLM\Software\Microsoft\IMEKR\8.0" /v "Dictionary" /t REG_EXPAND_SZ /d %%SystemRoot%%\IME\IMEKR8\DICTS\IMKRHJD.LEX >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD "HKLM\Software\Microsoft\IMEKR\8.0\directories" >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD "HKLM\Software\Microsoft\IMEKR\8.0\directories" /v "DictionaryPath" /t REG_EXPAND_SZ /d %%SystemRoot%%\IME\IMEKR8\DICTS >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD "HKLM\Software\Microsoft\IMEKR\8.0\directories" /v "ModulePath" /t REG_EXPAND_SZ /d %%SystemRoot%%\System32\IME\IMEKR8 >> %WinPEWinDir%\System32\IME\IMEReg.CMD


@echo REG ADD HKCU\Software\Microsoft\CTF\TIP\{A028AE76-01B1-46C2-99C4-ACD9858AE02F} >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\TIP\{A028AE76-01B1-46C2-99C4-ACD9858AE02F}\LanguageProfile >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\TIP\{A028AE76-01B1-46C2-99C4-ACD9858AE02F}\LanguageProfile\0x00000412 >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\TIP\{A028AE76-01B1-46C2-99C4-ACD9858AE02F}\LanguageProfile\0x00000412\{B5FE1F02-D5F2-4445-9C03-C568F23C99A1} >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\TIP\{A028AE76-01B1-46C2-99C4-ACD9858AE02F}\LanguageProfile\0x00000412\{B5FE1F02-D5F2-4445-9C03-C568F23C99A1} /v "Enable" /t REG_DWORD /d 1 >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\SortOrder >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000412 >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000412\{34745C63-B2F0-4784-8B67-5E12C8701A31} >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000412\{34745C63-B2F0-4784-8B67-5E12C8701A31}\00000000 >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000412\{34745C63-B2F0-4784-8B67-5E12C8701A31}\00000000 /v "CLSID" /d "{A028AE76-01B1-46C2-99C4-ACD9858AE02F}" >> %WinPEWinDir%\System32\IME\IMEReg.CMD @echo REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000412\{34745C63-B2F0-4784-8B67-5E12C8701A31}\00000000 /v "Profile" /d "{B5FE1F02-D5F2-4445-9C03-C568F23C99A1}" >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000412\{34745C63-B2F0-4784-8B67-5E12C8701A31}\00000000 /v "KeyboardLayout" /t REG_DWORD /d 0 >> %WinPEWinDir%\System32\IME\IMEReg.CMD @echo REG ADD HKCU\Software\Microsoft\CTF\SortOrder\Language /v "00000000" /d "00000412" >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\HiddenDummyLayouts /v "00000412" /d "00000412" >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\Assemblies\0x00000412\{34745C63-B2F0-4784-8B67-5E12C8701A31} /v "Default" /d "{A028AE76-01B1-46C2-99C4-ACD9858AE02F}" /f >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\Assemblies\0x00000412\{34745C63-B2F0-4784-8B67-5E12C8701A31} /v "Profile" /d "{B5FE1F02-D5F2-4445-9C03-C568F23C99A1}" /f >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\Assemblies\0x00000412\{34745C63-B2F0-4784-8B67-5E12C8701A31} /v "KeyboardLayout" /t REG_DWORD /d "04120412" /f >> %WinPEWinDir%\System32\IME\IMEReg.CMD

@echo start CTFMON.EXE >> %WinPEWinDir%\System32\IME\IMEReg.CMD

@if not exist %WinPEWinDir%\System32\startnet.org copy %WinPEWinDir%\System32\startnet.cmd %WinPEWinDir%\System32\startnet.org

@echo @echo off > %WinPEWinDir%\System32\STARTNET.CMD
@echo echo Preparing WinPE ... >> %WinPEWinDir%\System32\STARTNET.CMD
@type %WinPEWinDir%\System32\STARTNET.org >> %WinPEWinDir%\System32\STARTNET.CMD
@echo @echo. >> %WinPEWinDir%\System32\STARTNET.CMD
@echo Call %%WinDir%%\System32\IME\IMEReg.CMD >> %WinPEWinDir%\System32\STARTNET.CMD
endlocal

위의 배치 파일을 뜯어 보면 실상 별건 없습니다. 그냥 현재 실행 중인 윈도우에서 필요한 파일들을 마운트된 윈도우 PE 로 복사하고[이 때문에 제작하려는 윈도우 PE 의 비트 버전에 맞춰 32비트 PE 3.x 는 윈도우 7 32비트에서 작업해야 하며 64비트 PE 3.x 는 윈도우 7 64비트에서 작업해야 하는 불편이 있습니다.], IME 환경 레지스트리를 등록하는 IMEReg.cmd 파일을 생성, 이를 startnet.cmd 파일에 등록하는 구조입니다. 그리고 기존의 startnet.cmd 파일은 startnet.org 파일로 백업하게 됩니다. 사실상 크게 복잡한 부분은 없습니다.

참고로 위의 배치 파일에서 파란색과 빨간색으로 표시한 부분은 윈도우 8 에서 바뀐 부분으로 파란색으로 표시한 IMEKR8 폴더가 모두 IMEKR 폴더로 이름이 바뀌었고, 빨간색으로 표시한 HKLM 하위의 IME 관련 레지스트리 위치가 바뀌었습니다.



아무튼, 그래서 이러한 변경된 사항들을 반영하여 아래와 같이 윈도우 PE 4.0 버전용 한글 IME  입력기 추가하기 배치 파일 기본 뼈대를 만들어 봤습니다. 마찬가지로 위의 테크넷 제공 배치 파일에서 수정한 부분은 파란색으로 표시하였고, 바꾼 부분은 빨간색으로 표시하였습니다. [ * 참고로 아래의 배치 파일 뼈대는 말했듯이 공식적인 테크넷 문서에서 제공된 것이 아닌 제가 비교해보고 수정한 것이라 100% 완벽하지 않을 수 있습니다. 그래도 아래의 배치 파일로 작업을 진행한 후 한글이 정상적으로 입력되는 것은 확인하였습니다.]

echo Preparing IME folder for WinPE.
setlocal

set WinPEWinDir=<Path to Windows Directory of your WinPE image (for example, C:\winpe_x86\Windows)>
set IMEBinSrc=%windir%

md %WinPEWinDir%\IME
md %WinPEWinDir%\IME\IMEKR
md %WinPEWinDir%\IME\IMEKR\DICTS
md %WinPEWinDir%\System32\IME
md %WinPEWinDir%\System32\IME\IMEKR
md %WinPEWinDir%\System32\IME\IMEKR\DICTS
md %WinPEWinDir%\System32\IME\shared

rem Fonts folder
copy /y %IMEBinSrc%\Fonts\gulim.ttc %WinPEWinDir%\Fonts\gulim.ttc

rem SYSTEM32 folder (Cicero)
copy /y %IMEBinSrc%\System32\CTFMON.EXE %WinPEWinDir%\System32\CTFMON.EXE
copy /y %IMEBinSrc%\System32\MSUTB.DLL %WinPEWinDir%\System32\MSUTB.DLL
copy /y %IMEBinSrc%\System32\MsCtfMonitor.DLL %WinPEWinDir%\System32\MsCtfMonitor.DLL

rem DICTS folder
copy /y %IMEBinSrc%\IME\IMEKR\DICTS\IMKRHJD.LEX %WinPEWinDir%\IME\IMEKR\DICTS\IMKRHJD.LEX

rem SYSTEM32 folder
copy /y %IMEBinSrc%\System32\msctfime.ime %WinPEWinDir%\System32\msctfime.ime

rem IMEKR folder
copy /y %IMEBinSrc%\System32\IME\IMEKR\IMKRAPI.DLL %WinPEWinDir%\System32\IME\IMEKR\IMKRAPI.DLL
copy /y %IMEBinSrc%\System32\IME\IMEKR\IMKRTIP.DLL %WinPEWinDir%\System32\IME\IMEKR\IMKRTIP.DLL
copy /y %IMEBinSrc%\System32\IME\IMEKR\DICTS\IMKRHJD.DLL %WinPEWinDir%\System32\IME\IMEKR\DICTS\IMKRHJD.DLL

rem shared folder
copy /y %IMEBinSrc%\System32\IME\shared\IMEAPIS.DLL %WinPEWinDir%\System32\IME\shared\IMEAPIS.DLL
copy /y %IMEBinSrc%\System32\IME\shared\IMETIP.DLL %WinPEWinDir%\System32\IME\shared\IMETIP.DLL
copy /y %IMEBinSrc%\System32\IME\shared\IMJKAPI.DLL %WinPEWinDir%\System32\IME\shared\IMJKAPI.DLL
copy /y %IMEBinSrc%\System32\IME\shared\MSCAND20.DLL %WinPEWinDir%\System32\IME\shared\MSCAND20.DLL

rem Creating some batch files...
@echo @echo off > %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REGSVR32 /S %%WinDir%%\System32\MSUTB.DLL >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REGSVR32 /S %%WinDir%%\System32\MsCtfMonitor.DLL >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REGSVR32 /S %%WinDir%%\System32\IME\shared\IMETIP.DLL >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REGSVR32 /S %%WinDir%%\System32\IME\shared\IMEAPIS.DLL >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REGSVR32 /S %%WinDir%%\System32\IME\shared\IMJKAPI.DLL >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REGSVR32 /S %%WinDir%%\System32\IME\shared\MSCAND20.DLL >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REGSVR32 /S %%WinDir%%\System32\IME\IMEKR\IMKRTIP.DLL >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REGSVR32 /S %%WinDir%%\System32\IME\IMEKR\IMKRAPI.DLL >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REGSVR32 /S %%WinDir%%\System32\IME\IMEKR\DICTS\IMKRHJD.DLL >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD "HKLM\Software\Microsoft\CTF" /v "StartOnNoTaskEng" /t REG_DWORD /d 1 >> %WinPEWinDir%\System32\IME\IMEReg.CMD

@echo REG ADD "HKLM\Software\Microsoft\IME" >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD "HKLM\Software\Microsoft\IME\15.0" >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD "HKLM\Software\Microsoft\IME\15.0\IMEKR" >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD "HKLM\Software\Microsoft\IME\15.0\IMEKR" /v "Dictionary" /t REG_EXPAND_SZ /d %%SystemRoot%%\IME\IMEKR\DICTS\IMKRHJD.LEX >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD "HKLM\Software\Microsoft\IME\15.0\IMEKR\directories" >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD "HKLM\Software\Microsoft\IME\15.0\IMEKR\directories" /v "DictionaryPath" /t REG_EXPAND_SZ /d %%SystemRoot%%\IME\IMEKR\DICTS\ >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD "HKLM\Software\Microsoft\IME\15.0\IMEKR\directories" /v "ModulePath" /t REG_EXPAND_SZ /d %%SystemRoot%%\System32\IME\IMEKR\ >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD "HKLM\Software\Microsoft\IME\15.0\IMEKR\version" /ve /d "15.0.0000.0" >> %WinPEWinDir%\System32\IME\IMEReg.CMD


@echo REG ADD HKCU\Software\Microsoft\CTF\TIP\{A028AE76-01B1-46C2-99C4-ACD9858AE02F} >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\TIP\{A028AE76-01B1-46C2-99C4-ACD9858AE02F}\LanguageProfile >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\TIP\{A028AE76-01B1-46C2-99C4-ACD9858AE02F}\LanguageProfile\0x00000412 >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\TIP\{A028AE76-01B1-46C2-99C4-ACD9858AE02F}\LanguageProfile\0x00000412\{B5FE1F02-D5F2-4445-9C03-C568F23C99A1} >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\TIP\{A028AE76-01B1-46C2-99C4-ACD9858AE02F}\LanguageProfile\0x00000412\{B5FE1F02-D5F2-4445-9C03-C568F23C99A1} /v "Enable" /t REG_DWORD /d 1 >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\SortOrder >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000412 >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000412\{34745C63-B2F0-4784-8B67-5E12C8701A31} >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000412\{34745C63-B2F0-4784-8B67-5E12C8701A31}\00000000 >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000412\{34745C63-B2F0-4784-8B67-5E12C8701A31}\00000000 /v "CLSID" /d "{A028AE76-01B1-46C2-99C4-ACD9858AE02F}" >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000412\{34745C63-B2F0-4784-8B67-5E12C8701A31}\00000000 /v "Profile" /d "{B5FE1F02-D5F2-4445-9C03-C568F23C99A1}" >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000412\{34745C63-B2F0-4784-8B67-5E12C8701A31}\00000000 /v "KeyboardLayout" /t REG_DWORD /d 0 >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\SortOrder\Language /v "00000000" /d "00000412" >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\HiddenDummyLayouts /v "00000412" /d "00000412" >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\Assemblies\0x00000412\{34745C63-B2F0-4784-8B67-5E12C8701A31} /v "Default" /d "{A028AE76-01B1-46C2-99C4-ACD9858AE02F}" /f >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\Assemblies\0x00000412\{34745C63-B2F0-4784-8B67-5E12C8701A31} /v "Profile" /d "{B5FE1F02-D5F2-4445-9C03-C568F23C99A1}" /f >> %WinPEWinDir%\System32\IME\IMEReg.CMD
@echo REG ADD HKCU\Software\Microsoft\CTF\Assemblies\0x00000412\{34745C63-B2F0-4784-8B67-5E12C8701A31} /v "KeyboardLayout" /t REG_DWORD /d "04120412" /f >> %WinPEWinDir%\System32\IME\IMEReg.CMD

@echo start CTFMON.EXE >> %WinPEWinDir%\System32\IME\IMEReg.CMD

@if not exist %WinPEWinDir%\System32\startnet.org copy %WinPEWinDir%\System32\startnet.cmd %WinPEWinDir%\System32\startnet.org

@echo @echo off > %WinPEWinDir%\System32\STARTNET.CMD
@echo echo Preparing WinPE ... >> %WinPEWinDir%\System32\STARTNET.CMD
@type %WinPEWinDir%\System32\STARTNET.org >> %WinPEWinDir%\System32\STARTNET.CMD
@echo @echo. >> %WinPEWinDir%\System32\STARTNET.CMD
@echo Call %%WinDir%%\System32\IME\IMEReg.CMD >> %WinPEWinDir%\System32\STARTNET.CMD

endlocal

이렇게 뼈대 배치 파일을 만든 후, 현재 실행 중인 윈도우에서 직접 파일을 복사해오는 부분은 현재 작업 중인 윈도우가 아닌 제가 미리 추출하여 함께 포함시킨 IMEBin 폴더에서 가져오도록 만드는 부분 등을 수정하였고, 최종적으로 좀 더 편한 작업을 위해 제 나름의 스타일로 배치 파일을 다듬었습니다. 그게 이번 글에서 제공해드린 WinPEIMEKR.zip 파일입니다. 제 배치 파일을 많이 사용해보신 분들은 구성이 많이 친숙하죠. ^^;; 아무튼, 윈도우 PE 에 한글 IME 입력기를 추가하는 작업은 이게 전부입니다.


참고로 제가 글에서 제공한 배치 파일에 대해서 좀 더 첨언하자면 마운트된 윈도우 PE 이미지의 내용을 수정할 때는 관리자 권한 문제 및 TrustedInstaller 권한 문제가 발생하게 됩니다. 그래서 제 배치 파일에선 본격적인 작업을 시작하기 전에 먼저 작업의 대상이 되는 [마운트\Windows] 폴더에 관리자 그룹으로 소유권을 주고 권한을 가져오는 takeown 과 icacls 작업이 추가로 포함되어 있습니다.

이러한 이유로 WinPEIMEKR.cmd 배치 파일을 정상적으로 사용하기 위해선 관리자 그룹의 계정으로 로그온한 상태에서 배치 파일을 관리자 권한으로 실행해야 하는 것입니다. 혹시나 도움이 될까하여 적어보았습니다. 이상입니다.