几周前,我无意中将 .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
用户必须使用最终的 Reg 文件来纠正 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$ 做出这一决定的原因我无法理解,您为什么不将解决方案放在线程顶部以便更容易找到?好老 M$)
这样就可以了,notepad++ 不再接管。顺便提一下,您可以右键单击 *.bat 文件,如果单击菜单中的“编辑”条目,它将在记事本中为您打开批处理文件,同时仍需双击才能在命令 shell 中执行批处理文件。
参考使用[在 Windows 7 论坛中列出,但在 Windows 8.1 中是相同的]:
更详细的信息(如何打开 regedit 并以管理员身份运行(如果需要))
这一点有点棘手,因为我们必须使用注册表编辑器。您应该能够以用户身份执行此操作,因为大多数情况下更改是用户级别的,但根据您现有的安全策略,您可能必须执行以下操作。
- 点击开始菜单按钮
- 输入 regedit(当开始菜单可见时开始输入,它就会自动开始搜索)。
- 看到 regedit 出现在屏幕上后,右键单击它
- 当您看到上下文菜单出现时,单击以管理员身份运行
- 验证(输入您的管理员密码,将手指放在指纹读取器上,无论您如何设置它,就像登录帐户一样)
附注:如果愿意,您可以先尝试不执行管理员部分。最糟糕的情况是,它会拒绝您删除列出的密钥。如果发生这种情况,您必须以管理员身份运行,然后才能删除它。
通常,对于几乎所有 Windows 版本中的大多数文件关联(除了系统设置的关联,例如批处理文件):
您所要做的就是按住左 Shift 键,同时右键单击 *.bat 文件。当您对文件执行此操作时,您应该会看到一个打开方式...选项出现在出现的上下文菜单顶部附近 [右键单击时出现的小菜单]。单击打开方式后,您将看到一个对话框,您可以在其中选择使用什么打开文件。如果您选中左下角的用作默认框,它将成为您双击相同类型的文件时的新默认操作。
答案3
以上所有操作均未删除此注册表项(以管理员身份)(Windows 8.1):
HKEY_CURRENT_USER\Software\Microsoft\Windows\Roaming\OpenWith\FileExts.bat\UserChoice。
希望这可以帮助。