
幾週前,我不小心將 .bat 檔案更改為使用 Notepad++ 開啟(我認為這是一個相當常見的問題)。在 Win XP 和 Win 7 上,我有一個 .reg 文件,它更新了相關註冊表項並解決了問題。然而,這個批次檔不再適用於 Win 8.1(我假設 Win 8.1 中檔案關聯的處理方式有所不同),而且我的手動註冊表破解都不起作用。
無論我做什麼,我似乎都無法將 .bat 檔案恢復到先前的關聯。我終於設法取消 .bat 檔案與 Notepad++ 的關聯,但我不知道如何套用預設值。
我已嘗試過以下網站上列出的解決方案:
http://www.eightforums.com/tutorials/8486-default-file-associations-restore-windows-8-a.html https://social.technet.microsoft.com/Forums/windows/en-US/a85d8a59-b93b-45a3-8aee-cdf93ce32079/how-do-i-reset-the-default-file-association-for-bat- files-on-windows-81?forum=w8itproinstall
另外,我在管理員命令提示字元下執行了以下命令,但無濟於事(它們都報告了正確的值):
C:\Users\Christopher>assoc .bat
.bat= batfile
C:\Users\Christopher>ftype batfile
batfile="%1" %*
但我一無所獲。有人可以幫忙嗎?
答案1
這有點像一場噩夢,但我在@Pariah 的幫助下解決了它。我必須以管理員身份執行以下 .reg 文件,然後手動刪除以下金鑰:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.BAT\UserChoice
以管理員身分執行 reg 檔案:
runas /user:administrator "regedit /s c:\test.reg"
註冊文件:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\batfile]
@="Windows Batch File"
"EditFlags"=hex:30,04,00,00
"FriendlyTypeName"=hex(2):40,00,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,61,00,63,00,70,00,70,00,61,00,67,00,65,00,2e,00,64,00,6c,00,6c,\
00,2c,00,2d,00,36,00,30,00,30,00,32,00,00,00
[HKEY_CLASSES_ROOT\batfile\DefaultIcon]
@=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,69,00,6d,00,\
61,00,67,00,65,00,72,00,65,00,73,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,36,\
00,38,00,00,00
[HKEY_CLASSES_ROOT\batfile\shell]
[HKEY_CLASSES_ROOT\batfile\shell\edit]
[HKEY_CLASSES_ROOT\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
[HKEY_CLASSES_ROOT\batfile\shell\open]
"EditFlags"=hex:00,00,00,00
[HKEY_CLASSES_ROOT\batfile\shell\open\command]
@="\"%1\" %*"
[HKEY_CLASSES_ROOT\batfile\shell\print]
[HKEY_CLASSES_ROOT\batfile\shell\print\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,2f,00,70,00,20,\
00,25,00,31,00,00,00
[HKEY_CLASSES_ROOT\batfile\shell\runas]
"HasLUAShield"=""
[HKEY_CLASSES_ROOT\batfile\shell\runas\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,63,00,6d,00,\
64,00,2e,00,65,00,78,00,65,00,20,00,2f,00,43,00,20,00,22,00,25,00,31,00,22,\
00,20,00,25,00,2a,00,00,00
[HKEY_CLASSES_ROOT\batfile\shell\runasuser]
@="@shell32.dll,-50944"
"Extended"=""
"SuppressionPolicyEx"="{F211AA05-D4DF-4370-A2A0-9F19C09756A7}"
[HKEY_CLASSES_ROOT\batfile\shell\runasuser\command]
"DelegateExecute"="{ea72d00e-4960-42fa-ba92-7792a7944c1d}"
[HKEY_CLASSES_ROOT\batfile\ShellEx]
[HKEY_CLASSES_ROOT\batfile\ShellEx\ContextMenuHandlers]
@="Compatibility"
[HKEY_CLASSES_ROOT\batfile\ShellEx\ContextMenuHandlers\Compatibility]
@="{1d27f844-3a1f-4410-85ac-14651078412d}"
[HKEY_CLASSES_ROOT\batfile\ShellEx\ContextMenuHandlers\OpenGLShExt]
@="{E97DEC16-A50D-49bb-AE24-CF682282E08D}"
[HKEY_CLASSES_ROOT\batfile\ShellEx\DropHandler]
@="{86C86720-42A0-1069-A2E8-08002B30309D}"
[HKEY_CLASSES_ROOT\batfile\ShellEx\PropertySheetHandlers]
[HKEY_CLASSES_ROOT\batfile\ShellEx\PropertySheetHandlers\ShimLayer Property Page]
@="{513D916F-2A8E-4F51-AEAB-0CBC76FB1AF8}"
[HKEY_CLASSES_ROOT\batfile\ShellEx\{8895b1c6-b41f-4c1c-a562-0d564250836f}]
@="{1531d583-8375-4d3f-b5fb-d23bbd169f22}"
答案2
使用者必須使用最終的註冊表檔案來修正 Windows 8.1 中的此問題[執行 Notepad++ 提供的批次檔以將 notepad++ 設定為預設批次檔處理程序之後。他們嘗試了此修復程序下面的其他兩個修復程序。最後,他們必須以管理員身分在 .reg 檔案中執行以下命令。
首先,以管理員身分執行 reg 檔案: 注意:最好將此檔案放在 C:\ 上,並將檔案命名為類似 fix.reg 的名稱,因此最終它的名稱類似於 C:\fix.reg。如果您將其放置在路徑和/或檔案名稱中包含空格的位置,您將收到錯誤訊息,並且不會新增/變更登錄項目。
命令:
runas /user:Administrator "regedit.exe c:\fix.reg"
fix.reg 檔案的內容:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\batfile]
@="Windows Batch File"
"EditFlags"=hex:30,04,00,00
"FriendlyTypeName"=hex(2):40,00,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,61,00,63,00,70,00,70,00,61,00,67,00,65,00,2e,00,64,00,6c,00,6c,\
00,2c,00,2d,00,36,00,30,00,30,00,32,00,00,00
[HKEY_CLASSES_ROOT\batfile\DefaultIcon]
@=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,69,00,6d,00,\
61,00,67,00,65,00,72,00,65,00,73,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,36,\
00,38,00,00,00
[HKEY_CLASSES_ROOT\batfile\shell]
[HKEY_CLASSES_ROOT\batfile\shell\edit]
[HKEY_CLASSES_ROOT\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
[HKEY_CLASSES_ROOT\batfile\shell\open]
"EditFlags"=hex:00,00,00,00
[HKEY_CLASSES_ROOT\batfile\shell\open\command]
@="\"%1\" %*"
[HKEY_CLASSES_ROOT\batfile\shell\print]
[HKEY_CLASSES_ROOT\batfile\shell\print\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,2f,00,70,00,20,\
00,25,00,31,00,00,00
[HKEY_CLASSES_ROOT\batfile\shell\runas]
"HasLUAShield"=""
[HKEY_CLASSES_ROOT\batfile\shell\runas\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,63,00,6d,00,\
64,00,2e,00,65,00,78,00,65,00,20,00,2f,00,43,00,20,00,22,00,25,00,31,00,22,\
00,20,00,25,00,2a,00,00,00
[HKEY_CLASSES_ROOT\batfile\shell\runasuser]
@="@shell32.dll,-50944"
"Extended"=""
"SuppressionPolicyEx"="{F211AA05-D4DF-4370-A2A0-9F19C09756A7}"
[HKEY_CLASSES_ROOT\batfile\shell\runasuser\command]
"DelegateExecute"="{ea72d00e-4960-42fa-ba92-7792a7944c1d}"
[HKEY_CLASSES_ROOT\batfile\ShellEx]
[HKEY_CLASSES_ROOT\batfile\ShellEx\ContextMenuHandlers]
@="Compatibility"
[HKEY_CLASSES_ROOT\batfile\ShellEx\ContextMenuHandlers\Compatibility]
@="{1d27f844-3a1f-4410-85ac-14651078412d}"
[HKEY_CLASSES_ROOT\batfile\ShellEx\ContextMenuHandlers\OpenGLShExt]
@="{E97DEC16-A50D-49bb-AE24-CF682282E08D}"
[HKEY_CLASSES_ROOT\batfile\ShellEx\DropHandler]
@="{86C86720-42A0-1069-A2E8-08002B30309D}"
[HKEY_CLASSES_ROOT\batfile\ShellEx\PropertySheetHandlers]
[HKEY_CLASSES_ROOT\batfile\ShellEx\PropertySheetHandlers\ShimLayer Property Page]
@="{513D916F-2A8E-4F51-AEAB-0CBC76FB1AF8}"
[HKEY_CLASSES_ROOT\batfile\ShellEx\{8895b1c6-b41f-4c1c-a562-0d564250836f}]
@="{1531d583-8375-4d3f-b5fb-d23bbd169f22}"
如果上述方法對您不起作用,可以嘗試其他可能的修復方法 [已被至少 1 人驗證可以使用,但以下方法在 Windows 8.1 中不起作用]
若要導覽至的登錄項目: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts.BAT\UserChoice 刪除名為「使用者選擇」的項
為了清楚起見,程式碼區塊(根據請求):
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.BAT\UserChoice
參考頁面上也列出了以下修復:
我不同意這一點。這不是 Windows 8 特有的問題。文件關聯已被某些內容更改,需要將其更改回來。同樣的問題可以一直複製到 Windows 2000(可能更早)。您是否檢查了以下按鍵並確保它們設定為顯示的值,如該貼文的回覆所示?
[HKEY_CLASSES_ROOT.bat] @="batfile"
[HKEY_CLASSES_ROOT.bat\PersistentHandler] @="{5e941d80-bf96-11cd-b579-08002b30bfeb}"
[HKEY_CLASSES_ROOT\batfile\shell\open\command] @="\"%1\" %*"
第二個更複雜的解決方案的用戶還有一個指向他們創建的 *.reg 文件的鏈接,該文件應該會自動將本文上方列出的幾個鍵設置為默認值。請參閱參考頁底部,因為這被標記為最佳解決方案,並且這些解決方案保留在頁面底部(為什麼M$ 做出這個決定超出了我的範圍,您不會將解決方案放在線程頂部,以便更容易找到嗎?
這樣就可以了,並且讓 notepad++ 停止接管。作為旁注,您可以右鍵單擊*.bat 文件,如果單擊選單中的“編輯”條目,它將在記事本中為您打開批次文件,同時仍保留雙擊以在命令shell 中執行批次文件。
使用的參考[在 Windows 7 論壇中列出,但在 Windows 8.1 中是相同的]:
更詳細的資訊(如果需要,如何打開註冊表並以管理員身份運行)
對於這個來說,有點棘手,因為我們必須使用註冊表編輯器。您應該能夠以使用者身分執行此操作,因為大多數情況下更改是使用者層級的更改,但根據您的安全性策略,您可能必須執行以下操作。
- 點選開始功能表按鈕
- 輸入 regedit(只需在開始功能表可見時開始輸入,它就會自動開始搜尋)。
- 一旦你看到 regedit 出現在螢幕上,右鍵點擊它
- 當您看到上下文選單出現時,按一下“以管理員身份執行”
- 身份驗證(輸入您的管理員密碼,將手指放在指紋辨識器上,無論您如何設置,就像登入帳戶一樣)
附註:如果您願意,可以先嘗試一下,而無需執行管理員部分。最糟糕的事情就是拒絕您刪除列出的密鑰的能力。如果發生這種情況,您必須以管理員身份執行,然後才能將其刪除。
通常對於幾乎所有版本的 Windows 中的 MOST 文件關聯(除了系統設定文件,例如批次文件):
您所要做的就是按住左 Shift 鍵,同時右鍵點擊 *.bat 檔案。當您對文件執行此操作時,您應該會看到“開啟方式...”選項出現在上下文選單頂部附近,該選單出現[右鍵單擊內容時獲得的小選單]。單擊開啟方式後,您將看到一個對話框,您可以在其中選擇開啟檔案的方式。如果您選取左下角的「用作預設值」框,則當您雙擊相同類型的檔案時,它將成為新的預設操作。
答案3
上述所有操作(Windows 8.1)中都缺少刪除此登錄項目(以管理員身分):
HKEY_CURRENT_USER\Software\Microsoft\Windows\Roaming\OpenWith\FileExts.bat\UserChoice。
希望這可以幫助。