使用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,而是程序