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


Answers:


148

使用命令行:

assoc .="No Extension"
ftype "No Extension"="C:\path\to\my editor.exe" "%1"

值得赞扬的是,我从这里这里的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"

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

assoc "No Extension"\DefaultIcon=%SystemRoot%\System32\imageres.dll,-102

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

ftype "No Extension"=
assoc "No Extension"\DefaultIcon=
assoc .=

4
请注意,如果您的编辑器位于包含空格(例如“ C:\ Program Files”)的文件夹中,则需要将其放在引号中。 ftype no_ext="C:\Program Files (x86)\Notepad++\notepad++.exe" "%1"
GuiSim 2011年

10
FWIW,在Win7中,您需要以cmd管理员身份运行
Cristi Diaconescu,2012年

1
OK,再说一遍:在上面的示例中,no_extWindows资源管理器将在此类文件的“类型”列中显示。我认为更具可读性的描述会更好,所以我使用"No extension",包括双引号,而不是no_ext上面的命令。
Cristi Diaconescu 2012年

3
这是我为没有扩展名的文件设置.txt文件图标的方式(感谢@grawity的指针和想法): assoc "No extension"\DefaultIcon=%SystemRoot%\system32\imageres.dll,-102
Cristi Diaconescu 2012年

2
在Windows 10中,这对我不起作用。一些注意事项:1)assoc在PowerShell中找不到,因此cmd是必需的。2)当不以管理员身份运行时,它抛出了一个错误,所以我以管理员身份运行。该命令运行时不会引发错误,但似乎未执行任何操作。之后我也重新启动了。
JamesFaix

24

从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。(默认)更改为Word.Document.8。

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

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

以上信息有问题。我将.xml文件设置为使用Notepad ++打开,但.xml的(默认)条目设置为xmlfile ...
Piotr Dobrogost 2009年

我不太明白您的意思,但我恐怕也不知道解决方案...
Ivo Flipse

3
@Piotr:如果默认条目HKCR\.xmlxmlfile,则表示外壳程序(Explorer)需要转到HKCR\xmlfile并从键读取信息。
grawity

@Ivo当我查看注册表中的.txt条目以检查它的外观(我已通过Notepad ++打开的.txt文件)时,默认条目具有“ txtfile”值。在此注册表项中无处没有Notepad ++的痕迹。我想念什么?
Piotr Dobrogost 09年

您是说它现在不使用Notepad ++吗?如果您知道扩展名或自己创建扩展名,则应该可以将其设置为NotePad
Ivo Flipse 09/09/16

14

这是.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"

上面的信息有问题。当我单击新创建的.reg文件时,出现“指定的文件不是注册表脚本”错误。
Piotr Dobrogost,2009年

抱歉,请立即尝试,我在其顶部添加了另一行。
Pauk)

这在Explorer中有效,但在Total Commander中无效,Total Commander在此方面的行为(并始终具有)与Explorer相同。有什么想法吗?
Piotr Dobrogost,09年

您必须为Windows中的每个未知文件设置文件关联的想法很疯狂。干得好先生!
史蒂文·彭妮

在win7中验证,可以工作。因此不需要单独的./键。
jiggunjer 2015年

5

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

  1. 请遵循hasnj的解决方案:首先打开提升的命令窗口,然后键入

    assoc .="No Extension"
    ftype "No Extension"="C:\path\to\my editor.exe" "%1"
    
  2. 打开regedit并导航到

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.
    

    右键单击并添加一个新密钥(UserChoice如果尚不存在)。

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


不幸的是,这不适用于Windows 8.1。之后,我尝试杀死并重新启动explorer.exe-我还需要做其他事情吗?在HCU条目中,您提到我现在拥有OpenWithListOpenWithProgids并且我添加了一个UserChoice
科南

1
3 条中可能的关键错误No Extention应该是No Extension
JosefZ,2016年

2

Pauk的答案对我不起作用,我不得不改用:

Windows注册表编辑器版本5.00

[HKEY_CLASSES_ROOT。] @ =“无扩展名”

[HKEY_CLASSES_ROOT \无扩展名]

[HKEY_CLASSES_ROOT \ No Extension \ Shell]

[HKEY_CLASSES_ROOT \ No Extension \ Shell \ Open]

[HKEY_CLASSES_ROOT \ No Extension \ Shell \ Open \ Command] @ =“ C:\\ pathtoexe \\ yourexe.exe%1”

请注意exe路径上的双反斜杠。


这是为我工作的那个。关键是双反斜杠。
ontherocks

1

您也可以使用NirSoft FileTypesManager

FileTypesMan是Windows“文件夹选项”中“文件类型”选项卡的替代方法。

FileTypesMan还允许您轻松编辑每种文件类型的属性和标志,并允许您添加,编辑和删除文件类型中的动作。


1

其他答案有些过时了。以下是适用于Windows 7的链接:

没有文件扩展名的文件名的Shell扩展名

可以在以下位置注册不带文件扩展名的文件名的Shell扩展名:

[HKEY_CLASSES_ROOT\.]
           For example, to associate a program (for example, Notepad.exe) to open all files with no extension, use the following registry keys:

[HKEY_CLASSES_ROOT\.]
@=""

[HKEY_CLASSES_ROOT\.\shell]

[HKEY_CLASSES_ROOT\.\shell\open]

[HKEY_CLASSES_ROOT\.\shell\open\command]
@="<path to notepad.exe> %1"
           Here is an alternative method:

[HKEY_CLASSES_ROOT\.]
@="NoExtFile"

[HKEY_CLASSES_ROOT\NoExtFile]

[HKEY_CLASSES_ROOT\NoExtFile\shell]

[HKEY_CLASSES_ROOT\NoExtFile\shell\open]

[HKEY_CLASSES_ROOT\NoExtFile\shell\open\command]
@="<path to notepad.exe> %1"

将来,请在网站上包括此处最相关的部分,而不仅仅是提供链接。谢谢。
slhck

1

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

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

assoc .=txtfile

0

我在IE9中打开PDF文件时遇到问题,是IE9(旧程序需要)。PDF文件是由Javascript生成的,并以application / pdf内容类型扔回浏览器,这很好,但是文件名“ none”却是不好的。IE8允许您选择“保存”,“取消”和“打开”并了解MimeType。出于某些原因,IE9不会。因此,您每次必须选择使用PDF阅读器打开它。

我的解决方案:通过这篇文章,我为不带扩展名的文件建立了文件关联。首先,我将其映射到Acrobat Reader,它工作正常,但限制了不带扩展名即可打开文件的可能性。因此,我选择Internet Explorer作为没有扩展名的文件的默认查看器。这样,如果IE可以打开它或知道插件或其他关联,它将起作用。

我在桌面上使用文件“ none1”和“ none2”对其进行了测试。“ none1”是说“ hello world”的文本文件。“ none2”是pdf文件。


这是我的.reg文件:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.]
@="htmlfile"

[HKEY_CLASSES_ROOT\.\PersistentHandler]
@="{eec97550-47a9-11cf-b952-00aa0051fe20}"

-见截图

http://postimg.org/image/xtklrzcoz/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.