添加批处理文件扩展名

时间:2014-01-20 05:58:20

标签: batch-file cmd registry

我想要在扩展程序.btm中添加太多,就像批处理文件一样,是否有任何方式,我可以将其永久添加到我的注册表中?< / p>

1 个答案:

答案 0 :(得分:3)

Here's my investigation over the topic

由于简单地使用assoc不起作用。我使用临时文件重命名带有bat扩展名的文件。还有房间形式改进(例如临时文件可能被删除),但这是我找到的唯一方法使用不同的扩展名创建一个像/ bat / cmd一样的文件。这不会编辑%PATHEXT%,所以如果你想在没有扩展名的情况下调用这些文件,你需要自己编辑。

首先创建一个如下所示的bat文件:

@echo off 
copy "%~nx1"  "%temp%\%~nx1.bat" /Y >nul 
"%temp%\%~nx1.bat"  %2

并将其另存为"%ProgramFiles%\caller\caller.bat"

然后创建一个这样的.bat文件并以管理员身份运行:

Windows Registry Editor Version 5.00

;REM
;REM -------- THIS IS INSTALLMENT PART --------
;REM
;@ECHO OFF
;CLS
;BREAK
;BREAK -- CREATING THE EXTENSION CALLER 
;BREAK
;
;echo @echo off > %temp%\caller.temp
;echo copy "%%~nx1"  "%%temp%%\%%~nx1.bat" /Y ^>nul >>%temp%\caller.temp
;echo "%%temp%%\%%~nx1.bat"  %%2>>%temp%\caller.temp
;
;md "%ProgramFiles%\caller" >nul 2>&1
;copy "%temp%\caller.temp"  "%ProgramFiles%\caller\caller.bat" /Y >nul 2>&1
;
;BREAK
;BREAK -- CALLING REGEDIT
;BREAK
;
;REGEDIT.EXE /S "%~f0"
;GOTO :EOF
;
;REM
;REM -------- HERE STARTS THE REGISTRY PART --------
;REM




;this links the information for the extension to
;HKEY_CLASSES_ROOT\btmfile
[HKEY_CLASSES_ROOT\.btm]
@="cmffile"

;this is used by windows search
;it's value indicates that it contains only text
[HKEY_CLASSES_ROOT\.btm\PersistentHandler]
@="{5e941d80-bf96-11cd-b579-08002b30bfeb}"

;This is the other part of the registry which is edited
;here is contained the actual information
[HKEY_CLASSES_ROOT\btmfile]

[HKEY_CLASSES_ROOT\btmfile\DefaultIcon]
@="%SystemRoot%\\System32\\imageres.dll,-68"

[HKEY_CLASSES_ROOT\btmfile\shell]

[HKEY_CLASSES_ROOT\btmfile\shell\Run]

;Unfortunately does not work with %ProgramFiles%
[HKEY_CLASSES_ROOT\btmfile\shell\Run\command]
@="\"C:\\Program Files\\caller\\caller.bat\" \"%1\" %*"