win7下设置TotalCommander为默认文件管理器

前几天刚看完viatc这个程序的介绍,又看到善用佳软在中科大的演讲,最后决定上了total commander(以下简称TC)这个贼船。

##设置Total commander为默认文件管理器
默认情况下TC没有提供设置为默认管理器的方法,翻遍了网上的教程,都只是在xp下的设置,无非就是设置文件夹的关联方式。在注册表HKCR\Folder\shell\open\command下。

##设置为默认管理器后控制面板打不开
但问题又来了,TC在win7下不支持控制面板的打开,很多子项目都无法打开。
在上面提到的注册表键值下,%1参数传递给目标程序。普通文件传递的就是文件的路径,而作为控制面板之类的虚拟文件传递的是::{xxx}类似的CLSID。
所以通过ahk对命令行参数的处理写了个启动器,算是解决了这个问题。
下面是ctotalcmd.ahk

Loop, %0%  ;对每个参数执行一次:
{
    param := %A_Index%
If param not contains ::{,.tib
        Run totalcmd.exe  /O /T /L="%param%"
    Else
        Run Explorer.exe %param%
    p=1
}
    if !p
        Run totalcmd.exe  /O /T 

与之对应的是另一个ahk小程序,安装/卸载totalcmd.ahk

RegRead, IsExp, HKEY_LOCAL_MACHINE, SOFTWARE\Classes\Folder\shell\open\command, DelegateExecute
If(IsExp="{11dbb47c-a525-400b-9e80-a54615a090c0}"){
    RegDelete HKEY_LOCAL_MACHINE, SOFTWARE\Classes\Folder\shell\open\command, DelegateExecute
    RegWrite, REG_EXPAND_SZ, HKEY_LOCAL_MACHINE, SOFTWARE\Classes\Folder\shell\open\command, , `"%A_WorkingDir%\cTOTALCMD.EXE`" `"`%1`"
    TrayTip,,cTotalCommader为默认文件管理器,2000
    Sleep ,1500
    }
Else{
    RegWrite, REG_EXPAND_SZ, HKEY_LOCAL_MACHINE, SOFTWARE\Classes\Folder\shell\open\command, DelegateExecute, {11dbb47c-a525-400b-9e80-a54615a090c0}
    RegWrite, REG_EXPAND_SZ, HKEY_LOCAL_MACHINE, SOFTWARE\Classes\Folder\shell\open\command, , `%SystemRoot`%\Explorer.exe
    TrayTip,,Explorer为默认文件管理器,2000
    Sleep ,1500
}

注意必须放在tc目录下使用,目前对于管理无线网络、字体管理无法打开,需要临时卸载。
仅限于win7,xp请参考@sunwind兄的文章