@ECHO OFF
REM #########################################################################
REM #
REM # 레지스트리를 통해 확장자와 프로그램을 연결한다.
REM #
REM #########################################################################
REM # UTF-8로 코드페이지 변경
REM #########################################################################
CHCP 65001
CLS
ECHO #########################################################################
ECHO # 시작
ECHO #########################################################################
CALL :FUNC_DEL_MUSICPLAYER_EXT
CALL :FUNC_SET_MUSICPLAYER_EXT
CALL :FUNC_DEL_DOCUMENT_EXT
CALL :FUNC_SET_DOCUMENT_EXT
REM CALL :FUNC_DEL_PICTURE_EXT
REM CALL :FUNC_SET_PICTURE_EXT
PAUSE
EXIT /B %ERRORLEVEL%
:FUNC_SET_MUSICPLAYER_EXT
ECHO #########################################################################
ECHO # 음악플레이어 확장자를 등록한다.
ECHO #########################################################################
CALL :FUNC_ADD_EXT_HKCR aac foobar2000 "C:\PortableApps\foobar2000\foobar2000.exe"
CALL :FUNC_ADD_EXT_HKCR aiff foobar2000 "C:\PortableApps\foobar2000\foobar2000.exe"
CALL :FUNC_ADD_EXT_HKCR flac foobar2000 "C:\PortableApps\foobar2000\foobar2000.exe"
CALL :FUNC_ADD_EXT_HKCR mp3 foobar2000 "C:\PortableApps\foobar2000\foobar2000.exe"
CALL :FUNC_ADD_EXT_HKCR ogg foobar2000 "C:\PortableApps\foobar2000\foobar2000.exe"
CALL :FUNC_ADD_EXT_HKCR pcm foobar2000 "C:\PortableApps\foobar2000\foobar2000.exe"
CALL :FUNC_ADD_EXT_HKCR wav foobar2000 "C:\PortableApps\foobar2000\foobar2000.exe"
CALL :FUNC_ADD_EXT_HKCR wma foobar2000 "C:\PortableApps\foobar2000\foobar2000.exe"
EXIT /B /0
:FUNC_SET_PICTURE_EXT
ECHO #########################################################################
ECHO # 그림 및 사진 확장자를 등록한다.
ECHO #########################################################################
CALL :FUNC_ADD_EXT_HKCR arw fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR bmp fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR cr2 fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR crw fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR dng fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR gif fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR jpe fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR jpeg fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR jpg fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR mrw fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR nef fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR orf fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR pef fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR png fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR psd fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR raf fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR rw2 fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR srf fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR tga fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR tif fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR tiff fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
CALL :FUNC_ADD_EXT_HKCR wmf fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
EXIT /B /0
:FUNC_SET_DOCUMENT_EXT
ECHO #########################################################################
ECHO # 문서 확장자를 등록한다.
ECHO #########################################################################
CALL :FUNC_ADD_EXT_HKCR txt editplus "C:\PortableApps\EditPlus_Portable\editplus.exe"
EXIT /B /0
:FUNC_DEL_MUSICPLAYER_EXT
ECHO #########################################################################
ECHO # 음악플레이어 확장자 등록을 삭제한다.
ECHO #########################################################################
CALL :FUNC_DELETE_EXT_HKCR aac foobar2000
CALL :FUNC_DELETE_EXT_HKCR aiff foobar2000
CALL :FUNC_DELETE_EXT_HKCR flac foobar2000
CALL :FUNC_DELETE_EXT_HKCR mp3 foobar2000
CALL :FUNC_DELETE_EXT_HKCR ogg foobar2000
CALL :FUNC_DELETE_EXT_HKCR pcm foobar2000
CALL :FUNC_DELETE_EXT_HKCR wav foobar2000
CALL :FUNC_DELETE_EXT_HKCR wma foobar2000
EXIT /B /0
:FUNC_DEL_PICTURE_EXT
ECHO #########################################################################
ECHO # 그림 및 사진 확장자 등록을 삭제한다.
ECHO #########################################################################
CALL :FUNC_DELETE_EXT_HKCR arw fsviewer
CALL :FUNC_DELETE_EXT_HKCR bmp fsviewer
CALL :FUNC_DELETE_EXT_HKCR cr2 fsviewer
CALL :FUNC_DELETE_EXT_HKCR crw fsviewer
CALL :FUNC_DELETE_EXT_HKCR dng fsviewer
CALL :FUNC_DELETE_EXT_HKCR gif fsviewer
CALL :FUNC_DELETE_EXT_HKCR jpe fsviewer
CALL :FUNC_DELETE_EXT_HKCR jpeg fsviewer
CALL :FUNC_DELETE_EXT_HKCR jpg fsviewer
CALL :FUNC_DELETE_EXT_HKCR mrw fsviewer
CALL :FUNC_DELETE_EXT_HKCR nef fsviewer
CALL :FUNC_DELETE_EXT_HKCR orf fsviewer
CALL :FUNC_DELETE_EXT_HKCR pef fsviewer
CALL :FUNC_DELETE_EXT_HKCR png fsviewer
CALL :FUNC_DELETE_EXT_HKCR psd fsviewer
CALL :FUNC_DELETE_EXT_HKCR raf fsviewer
CALL :FUNC_DELETE_EXT_HKCR rw2 fsviewer
CALL :FUNC_DELETE_EXT_HKCR srf fsviewer
CALL :FUNC_DELETE_EXT_HKCR tga fsviewer
CALL :FUNC_DELETE_EXT_HKCR tif fsviewer
CALL :FUNC_DELETE_EXT_HKCR tiff fsviewer
CALL :FUNC_DELETE_EXT_HKCR wmf fsviewer
EXIT /B /0
:FUNC_DEL_DOCUMENT_EXT
ECHO #########################################################################
ECHO # 문서 확장자 등록을 삭제한다.
ECHO #########################################################################
CALL :FUNC_DELETE_EXT_HKCR txt editplus
EXIT /B /0
REM #########################################################################
REM # HKEY_CLASSES_ROOT에 확장자 레지스트리 등록
REM # ex) CALL :FUNC_ADD_EXT_HKCR txt notepad "C:\Windows\System32\notepad.exe"
REM #########################################################################
:FUNC_ADD_EXT_HKCR
REM #########################################################################
REM # HKEY_CLASSES_ROOT에 확장자 등록
REM #########################################################################
REG ADD "HKCR\.%1" /T REG_SZ /D "%2.%1" /F
REM 레지스트리 백업
REM REG EXPORT "HKCR\.%1" "backup_%1.reg" /Y
REM HKEY_CLASSES_ROOT에 애플리케이션 등록
REG ADD "HKCR\%2.%1\DefaultIcon" /T REG_SZ /D "%3" /F
REG ADD "HKCR\%2.%1\shell\open\command" /T REG_SZ /D "%3 ""%%1""" /F
EXIT /B /0
REM #########################################################################
REM # 확장자 레지스트리 삭제 (HKEY_CLASSES_ROOT)
REM # ex) CALL :FUNC_DELETE_EXT_HKCU txt notepad
REM #########################################################################
:FUNC_DELETE_EXT_HKCR
REG DELETE "HKCR\.%1" /F
REG DELETE "HKCR\%2.%1" /F
EXIT /B /0
REM #########################################################################
REM # HKEY_CURRENT_USER에 확장자 레지스트리 등록
REM # ex) CALL :FUNC_ADD_EXT_HKCU txt notepad "C:\Windows\System32\notepad.exe"
REM #########################################################################
:FUNC_ADD_EXT_HKCU
REM #########################################################################
REM # HKEY_CLASSES_ROOT에 확장자 등록
REM #########################################################################
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%1" /F
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%1\OpenWithList" /F
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%1\OpenWithProgids" /F
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%1\UserChoice" /F
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%1\OpenWithList" /V "a" /T REG_SZ /D "%2.EXE" /F
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%1\OpenWithList" /V "MRUList" /T REG_SZ /D "a" /F
CALL :FUNC_ADD_REG_NONE %1 %1file
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%1\UserChoice" /V "ProgId" /T REG_SZ /D "%2.%%1" /F
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\ApplicationAssociationToasts" /V "Applications\%2.exe_.%1" /T REG_DWORD /D 0 /F
EXIT /B /0
REM #########################################################################
REM # 확장자 레지스트리 삭제 (HKEY_CURRENT_USER)
REM # ex) CALL :FUNC_DELETE_EXT_HKCU txt notepad
REM #########################################################################
:FUNC_DELETE_EXT_HKCU
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%1" /F
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\ApplicationAssociationToasts" /V "Applications\%2.exe_.%1" /F
EXIT /B /0
REM #########################################################################
REM # REG_NONE 타입 레지스트리 등록
REM # ex) CALL :FUNC_ADD_REG_NONE txt txtfile
REM #########################################################################
:FUNC_ADD_REG_NONE
ECHO Windows Registry Editor Version 5.00 > __tmp__.reg
ECHO [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%1\OpenWithProgids] >> __tmp__.reg
ECHO "%2"=hex(0): >> __tmp__.reg
REG IMPORT __tmp__.reg
DEL /Q __tmp__.reg
EXIT /B /0