使用TortoiseSVN 提交文件的时候,有一个bat文件,想用记事本打开,选择打开方式,用记事本打开,如图
以后bat文件 双击直接变成记事本了,网上说的关联修复根本不管作用,因为注册表 batfile和.bat即使删除了
这个文件关联也不发生变化,说明,文件关联的注册表项目不在HKEY_CLASSES_ROOT 跟下,而是在别的地方。
怎么知道究竟是哪里的问题呢?
新建立一个用户,然后测试 test.bat 是否正常,结果:正常。
注销,切换回原来的用户。
进入c:\Users\新用户\ 对 NTUSER.DAT 文件执行以下操作 【&RegFile 转换为 reg文件】
cmd /k reg load HKLM\1_%FileNames% %FileNames% & reg Export HKLM\1_%FileNames% 1_%FileNames%.reg & reg unload HKLM\1_%FileNames% & cmd /k
对%FileNames% 进行替换即可,因为我是用的是Open++,设置的很方便。
结果导出一个reg文件:1_NTUSER.DAT.reg
打开搜索.bat
[HKEY_LOCAL_MACHINE\1_NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.bat] [HKEY_LOCAL_MACHINE\1_NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.bat\OpenWithList] [HKEY_LOCAL_MACHINE\1_NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.bat\OpenWithProgids] "batfile"=hex(0): [HKEY_LOCAL_MACHINE\1_NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt] [HKEY_LOCAL_MACHINE\1_NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithList] "a"="notepad++.exe" "MRUList"="a" [HKEY_LOCAL_MACHINE\1_NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithProgids] "Notepad++_file"=hex(0):
看到没,这就是用户的文件管理 注册表地址。而非前面的在HKEY_CLASSES_ROOT,在HKEY_CLASSES_ROOT是系统全局的注册表项
用户的就被加载到了其他的地方。而这里的注册表才是管用,所以换了用户,注册表项被重新从 NTUSER.DAT 加载到注册表,结果就不一样了。
好了,知道了问题在哪里,进入自己的注册表的这个位置,将这个注册表项 删除或修改成上面的样子,然后 确认 系统注册表ROOT下的文件关联是正确的:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.bat] @="batfile" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\batfile\shell\open\command] @="\"%1\" %*" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\batfile\shell\edit\command] @=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\ 00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,4e,00,4f,00,\ 54,00,45,00,50,00,41,00,44,00,2e,00,45,00,58,00,45,00,20,00,25,00,31,00,00,\ 00
这样,bat文件就恢复了关联。
顺便把 有问题的bat贴上来:
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.bat] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.bat\OpenWithList] "a"="NOTEPAD.EXE" "MRUList"="cab" "b"="DEPENDS 1.0.EXE" "c"="WinRAR.exe" [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.bat\OpenWithProgids] "batfile"=hex(0): "cmdfile"=hex(0): "bat_auto_file"=hex(0): [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.bat\UserChoice] "Progid"="Applications\\cmd.exe"
上面的可是有问题的哦 userChoice变成了cmd 怪不得 一直打开都不是bat,而是程序