Windows 10 不允许我为文件扩展名设置默认应用程序

Windows 10 不允许我为文件扩展名设置默认应用程序

免责声明:我知道如何设置默认应用程序和文件扩展名,我之前已经做过很多次了。


我刚刚在一台新机器上安装了 Windows 10 Home。我正尝试将我的 Web 开发文件与 Netbeans 关联起来,但这可能无关紧要。

1. 文件扩展名不可用

首先,我使用的许多常见文件扩展名都不在文件扩展名列表中 - 例如.php扩展名。我不知道这是否通常出现在 Windows 列表中。我当然不必在.php之前使用相同操作系统的计算机上手动添加扩展名。

我通过手动添加文件扩展名解决了这个问题。正如我所说,我以前从来没有做过这样的事。


2.“打开方式”无法保存我选择的应用程序

如果我右键单击某个文件并“打开用”并启用“始终使用此应用打开文件”它会在我选择的程序中打开该文件,但资源管理器中的文件图标不会改变,并且不会将其设置为默认程序。

我仍然需要选择“打开用”每次我打开具有该扩展名的文件时。


3. 我无法通过应用选择默认设置

设置 > 默认应用 > 按应用设置默认值

我的程序(Netbeans)不在可用应用程序列表中。


4. 我无法按文件类型选择默认值

设置 > 默认应用 > 按文件类型选择默认应用

如果我选择文件扩展名和“[+]选择默认”,当我选择一个应用程序时,它会挂起一秒钟,好像它正在运行,然后什么都没有发生。不会设置默认值,并且“[+]选择默认”按钮仍在那里。

注意:这适用于已设置默认应用程序的任何文件类型。


其他信息

  • 我可以更改常见文件的扩展名,例如 PNG、TXT。
  • 我无法更改 HTML、CSS、JS、PHP、SQL 等文件的扩展名。

答案1

Windows 10 补丁KB4467682

解决了某些用户无法使用“打开方式...”命令或“设置”>“应用”>“默认应用”为某些应用和文件类型组合设置 Win32 程序默认值的问题。

我可以确认,最近的补丁修复了这个问题。只需更新 Windows 10,它应该可以再次工作

答案2

当 Windows 界面不适用于新扩展时,可以直接向注册表添加新的文件关联:

  • 启动 regedit 并点击HKEY_CLASSES_ROOT
  • 右键单击HKEY_CLASSES_ROOT并选择New,然后Key
  • 根据文件扩展名命名密钥,例如.ext。 (如果已存在,请跳过此步骤。)
  • 将您刚创建的密钥的默认值设置为某个未使用的唯一名称,例如MyFileType。 (如果已设置,请跳过此步骤。)
  • 重复上述步骤,创建另一个具有上述名称的新键,例如MyFileType。 (如果已存在,请跳过此步骤。)
  • 将此键的默认值设置为文件类型的名称,例如File Type name
  • 右键单击MyFileType并创建一个名为 的新子项DefaultIcon
  • 将新键的默认值设置为C:\path-to\executable,0使用处理请求的可执行文件。如果您的可执行文件不包含图标资源,请选择另一个可执行文件。(0是可执行文件中图标的索引。)
  • 创建另一个新键并将其命名为shell
  • 对于您想要关联的每个动词/动作,创建一个具有所需名称的新子键。一些动词是预设的,将自动使用本地化名称,例如open或。editprint
  • 为每个动词创建一个子键command并将其默认值设置为要运行的程序。还要确保包含所有需要的参数,如果里面有空格则添加引号,例如"C:\My Path\My Program.exe" "%1".%1将替换为为此操作选择的实际文件名。

例如,这是一个 样本 注册表文件来创建 .txt 文件和 EmEditor 之间的关联:

Windows 注册表编辑器版本 5.00

[HKEY_CLASSES_ROOT\.txt]
@="emeditor.txt"

[HKEY_CLASSES_ROOT\emeditor.txt]
@="文本文档"

[HKEY_CLASSES_ROOT\emeditor.txt\DefaultIcon]
@="%SystemRoot%\\SysWow64\\imageres.dll,-102"

[HKEY_CLASSES_ROOT\emeditor.txt\shell]

[HKEY_CLASSES_ROOT\emeditor.txt\shell\open]

[HKEY_CLASSES_ROOT\emeditor.txt\shell\open\命令]
@="\"C:\\Program Files\\EmEditor\\EMEDITOR.EXE\" \"%1\""

[HKEY_CLASSES_ROOT\emeditor.txt\shell\print]

[HKEY_CLASSES_ROOT\emeditor.txt\shell\print\命令]
@="\"C:\\Program Files\\EmEditor\\EMEDITOR.EXE\" /p \"%1\""

答案3

在找到一个不起眼的论坛帖子后,我终于设法解决了这个问题(自从重新安装 Windows 后,我现在已经丢失了该链接)。

对我来说,这个问题似乎与使用本地帐户安装 Windows 10 有关,而不是链接 Microsoft 帐户并登录。我不确定这是否是一个错误。

解决方法是完全重新安装 Windows 10 并链接 Microsoft 帐户(这是我一开始就不想做的事情)。

注意:通过 Windows 设置菜单中的“重新开始”选项重新安装无法解决问题,您必须彻底清除并重新安装,然后在安装期间或尝试更改任何设置之前立即链接 Microsoft 帐户。

答案4

我的解决方案受到@harrymc 的方法的启发,但可能更直接。

  1. 开始按钮 -> 输入注册表编辑器(Windows 10 似乎不会接受简单的注册表编辑器
  2. 在 HKEY_CLASSES_ROOT 下,查找文件扩展名。对于该注册表项,请查看打开使用Progids\其中存在一个无值的键,指示此扩展名的文件类型。
  3. 仍在 HKEY_CLASSES_ROOT 下,向下滚动到该文件类型,它也作为注册表项存在。在shell\open\命令\,键“(Default)”显示哪个可执行文件将打开该文件。修改该值以使用首选的可执行文件,包括任何所需的选项,但保留“%1”不变,以表示相关的文件参数。
  4. 在 HKEY_LOCAL_MACHINE\SOFTWARE\Classes 下重复此间接搜索和替换。我不知道哪种设置占主导地位,也许需要进行一些实验。
  5. 重新启动 Windows。
  6. 还有一个额外的好处:在文件资源管理器下,所有具有此扩展名的文件现在都将显示新设置的用于打开这些文件的首选可执行文件的图标。

相关内容