如何在 Windows 中设置打开没有扩展名的文件的默认程序?

Pio*_*ost 131 windows file-management

如何在 Windows 中设置打开没有扩展名的文件的默认程序?

has*_*sen 167

使用命令行:

assoc .="No Extension"
ftype "No Extension"="C:\path\to\my editor.exe" "%1"
Run Code Online (Sandbox Code Playgroud)

重新启动计算机以使更改生效。

值得称赞的是,我从这里这里的 vim wikia 中学到了这一点

额外信息:

代替"C:\path\to\...",以下宏可能有用:

  • %SystemDrive% - 安装了驱动窗口,即 C:\
  • %ProgramFiles% - 例如 "C:\Program Files\"
  • %ProgramFiles(x86)% - 例如 "C:\Program Files (x86)\"

不过,您需要正确地逃避它们:

ftype "No Extension"=^"^%ProgramFiles(x86)^%\Notepad++\notepad++.exe^" "%1"
Run Code Online (Sandbox Code Playgroud)

要将图标设置为与 .txt 文件相同(我没有这样做,因为它会自动使文件的图标显示为 Notepad++ 文件):

assoc "No Extension"\DefaultIcon=%SystemRoot%\System32\imageres.dll,-102
Run Code Online (Sandbox Code Playgroud)

要撤消,您可以阅读assoc /?ftype /?信息,例如:

ftype "No Extension"=
assoc "No Extension"\DefaultIcon=
assoc .=
Run Code Online (Sandbox Code Playgroud)

  • FWIW,在Win7中您需要以管理员身份运行`cmd` (12认同)
  • 请注意,如果您的编辑器位于包含空格(例如“C:\Program Files”)的文件夹中,则需要将其放在引号中。`ftype no_ext="C:\Program Files (x86)\Notepad++\notepad++.exe" "%1"` (4认同)
  • 好的,还有一个:在上面的示例中,Windows 资源管理器将在此类文件的“类型”列中显示“no_ext”。我认为更易读的描述会更好,所以我在上面的命令中使用了 `"No extension"` ,包括双引号,而不是 `no_ext` 。 (3认同)
  • 这是我为没有扩展名的文件设置 .txt 文件图标的方法(感谢 @grawity 的指针和想法):`assoc "No extension"\DefaultIcon=%SystemRoot%\system32\imageres.dll,-102` (3认同)
  • 这在 Windows 10 中对我不起作用。一些注意事项:1)它不会在 PowerShell 中找到 `assoc`,因此需要 `cmd`。2)它在不以管理员身份运行时抛出错误,所以我以管理员身份运行。该命令运行时不会抛出错误,但似乎没有执行任何操作。我后来也重启了。 (3认同)

Ivo*_*pse 27

来自 Windows IT 专业人士

带有扩展名的普通文件可以关联一个程序,但是对于没有扩展名的文件则不然。如果您双击一个并选择一个应用程序并选中该框以始终使用该应用程序,它将被忽略,并且每次您选择一个文件时都必须选择该应用程序。

您可以使用注册表强制执行此操作:

  • 启动注册表编辑器 (regedit.exe)
  • 移动到 HKEY_CLASSES_ROOT
  • 从编辑菜单中选择新建 - 键
  • 输入名称“.” 然后按 Enter(不要输入引号)
  • 选择新的“.” 钥匙
  • 双击(默认)值
  • 更改为用于打开的 HKEY_CLASSES_ROOT,例如用于 notepad.exe 应用程序 NOTEPAD 的 NOTEPAD
  • 单击确定

替代文字

如果您现在双击一个没有扩展名的文件,它将打开并选择应用程序。

要检查现有应用程序使用了什么,请查看 HKEY_CLASSES_ROOT 下的条目,例如 HKEY_CLASSES_ROOT.doc 使用 Word.Document.8,因此如果您希望将其作为默认编辑器,您可以将 HKEY_CLASSES_ROOT.(Default) 更改为 Word.Document.8。

任何避免需要编辑注册表的方法如下:

  • 打开资源管理器 - 查看 - 文件夹选项... - 文件类型 - 新类型:
  • 类型描述:文本(任何描述,您可以输入)
  • 相关扩展名:. (只是一个时期)
  • 行动: - 新...
  • 动作:打开
  • 用于执行操作的应用程序:c:\winnt\notepad.exe
  • 单击确定,然后再次确定

  • @Piotr:如果`HKCR\.xml` 的默认条目是`xmlfile`,则表示shell(资源管理器)需要转到`HKCR\xmlfile` 并从*那个* 键读取信息。 (3认同)

Pau*_*auk 15

这是让记事本打开未知文件扩展名的 .reg 文件示例。创建一个扩展名为.reg 的新文本文件,将其剪切并粘贴到其中,然后双击运行,它会将其放入注册表。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Unknown\shell]
@="notepad"

[HKEY_CLASSES_ROOT\Unknown\shell\notepad]
@="Open with Notepad"

[HKEY_CLASSES_ROOT\Unknown\shell\notepad\command]
@="C:\\WINDOWS\\NOTEPAD.EXE %1"
Run Code Online (Sandbox Code Playgroud)


Coo*_*ppo 8

不敢相信还没有人这么说过。您不需要像接受的答案所说的那样提供文本编辑器的路径。

只需在管理命令提示符中运行以下命令:

assoc .=txtfile
Run Code Online (Sandbox Code Playgroud)

  • 天哪,这就是正确答案!复杂性越低越好..谢谢 (2认同)
  • 我在 Win 11 上似乎不起作用。 (2认同)

小智 6

对于那些使用 Windows 11 并希望使用 Notepadd++ 的人来说,这很有效。打开管理员命令提示符并粘贴以下内容:

assoc .="No Extension"
ftype "No Extension"=^"^%ProgramFiles^%\Notepad++\notepad++.exe^" "%1"
assoc "No Extension"\DefaultIcon=%SystemRoot%\System32\imageres.dll,-102
Run Code Online (Sandbox Code Playgroud)

注意:这是针对x64 版本的,因此是“Program Files”而不是“Program Files (x86)

这对于 Dockerfile 非常有帮助。


小智 5

大多数这些解决方案在 Windows 8.1 上对我不起作用。我通过执行以下操作使其工作(这也适用于 Windows 7 和 Windows 10):

  1. 按照hasj的解决方案:首先打开一个提升的命令窗口并输入

    assoc .="No Extension"
    ftype "No Extension"="C:\path\to\my editor.exe" "%1"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 打开 regedit 并导航到

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.
    
    Run Code Online (Sandbox Code Playgroud)

    右键单击并添加一个名为的新键(UserChoice如果它不存在)。

  3. 在新的 UserChoice 键中,右键单击并创建一个名为的新字符串值Progid将其值设置为“无扩展名”(不带双引号)。