我可以在 Windows 10 中为未知/未注册的扩展设置默认程序吗?

我可以在 Windows 10 中为未知/未注册的扩展设置默认程序吗?

我的问题与此类似(非常有用,看看吧!):

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

但我在处理隐藏的 Linux 文件时遇到了困难。Linux 隐藏文件以 开头,.并且整个文件名被 Windows 解释为文件扩展名。

例如,我想默认在记事本中打开这些文件。这在 Windows 10 中可以实现吗?

我用的是20H2版本。

答案1

或者使用这个:

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文件并放入注册表中,如果您想使用任何其他程序,只需将第一部分和第二部分中的记事本替换为程序名称,将第三部分中的记事本路径替换为可执行文件的完整路径,您必须使用双反斜杠;

默认情况下,Windows会提示用户选择一个未知扩展名的默认程序,保存在HKCR\Unknown键中,修改它就可以将默认程序设置为所有未知扩展名的默认程序;如果文件名整个都是扩展名,并且所有文件名都是唯一的(在同一路径下),文件名是随机的,那么它们肯定是未知扩展名;

但不建议使用它,我没有把它作为第一个答案,因为这不是一个聪明的解决方案;例如,如果您使用记事本作为所有未知扩展名的默认程序,如果 .mp3、.dll、.jpeg 是未知的,您将只会看到难以理解的随机字符,因为这不是打开它们的正确方法;如果 .rar、.zip、.7z 是未知的,那么,尝试用记事本打开它们,看看会发生什么……

答案2

据我所知,我担心 Windows 本身不支持此功能,您必须自己创建一个逻辑,如果整个文件名被解释为扩展名,则没有扩展名的文件名,您可以在 PowerShell 中使用它:

if (-not ([System.IO.Path]::GetFileNameWithoutExtension($File))) {&"$Env:ProgramFiles\Notepad++\Notepad++.exe" $file}

如果您可以以某种方式将此或类似的其他逻辑放入注册表中,那么您可以双击文件以使用 Notepad++ 打开它们(或对每个文件执行 assoc 和 ftype...)。

上述脚本是一个 if 语句,只有 if 条件为真时才会执行,-not 是逻辑运算符,表示“不”,在这里表示“不存在”,[System.IO.Path] 是一个 PowerShell 类,GetFileNameWithoutExtension() 是一个 .Net 方法,它的作用正是如其名;$File 是一个变量,() 中的整个块是一个条件,表示“不存在没有扩展名的文件名”,{} 中的块是一个命令块,$Env 用于调用环境变量,$Env:ProgramFiles 相当于 cmd 中的 %ProgramFiles%,通常为“C:\Program Files”,“”中的字符串是 Notepad++ 的路径,& 是呼号,用于调用路径上的可执行文件,命令块使用 Notepad++ 打开文件;

要使用它,请将变量 $file 替换为文件的完整路径,路径必须用双引号括起来,或者先运行:$file="path\to\file",如果要使用其他程序,请将 path to Notepad++ 替换为程序的完整路径,也用双引号括起来……

相关内容