在 Windows 10 中,当存在文件扩展名关联但尚未设置文件类型打开命令字符串时,我可以期待什么默认行为?

在 Windows 10 中,当存在文件扩展名关联但尚未设置文件类型打开命令字符串时,我可以期待什么默认行为?

Strawberry Perl 5.30.0.1 的安装引发了这个问题。Active Perl 的用户报告了<FileType>=<OpenCommandString>在安装 Active Perl 期间创建的对存在问题。例如,ftype perl在命令提示符下返回 。如果您希望调用使用尾随参数,perl="C:\Perl\bin\perl.exe" "%1"则应该读取命名对。perl="C:\Perl\bin\perl.exe" "%1" %*file.perl arg1 arg2

Strawberry Perl 的安装与扩展名 '.pl' 建立了关联。assoc .pl返回.pl=Perl_program_file。但搜索的输出ftype没有返回<FileType>=<OpenCommandString>包含单词 'perl' 或扩展名 '.pl' 的对。'Perl 解释器' 与 '.pl' ('Perl 程序文件') 一起出现在设置应用程序中的列表 '设置 > 应用程序 > 默认应用程序 > 按文件类型选择默认应用程序' 中。

<FileType>=<OpenCommandString>现在我的问题是 - 如果未设置关联文件扩展名,则双击具有关联文件扩展名的文件时发出的默认打开命令字符串是什么?它是类似的东西吗<FileType>="C:\Path\" "%1" %*?这里“%1”替换文件名,%* 替换参数列表,根据文档(ftype - Microsoft Docs)。

<FileType>=<OpenCommandString>如果没有设置我会失去什么?

答案1

如果未设置“FileType=OpenCommandString”,我会失去什么?

显然,我输了

Strawberry Perl 在设置文件关联时采用非标准方法。正确的程序标识符 (ProgID) 格式[供应商或应用程序].[组件].[版本],它将 ProgID 设置为“Perl_program_file”。如 Windows 中所述文件类型文档,然后他们实现一个新的、描述性动词,,Execute Perl Program而不是使用Open

虽然这种方法不是标准的,但已经足够了。扩展快捷菜单 - Windows Docs(Windows 2000 及更高版本),

默认动词首先显示在快捷菜单上。其目的是为 Shell 提供一个在调用 ShellExecuteEx 但未指定动词时可以使用的动词。当以这种方式使用 ShellExecuteEx 时,Shell 不一定会选择默认动词。...Shell 使用以下列表中的第一个可用动词。如果没有可用动词,则操作失败。

  • 开放动词
  • 默认动词
  • 注册表中的第一个动词
  • openwith 动词

其他参考资料:

相关内容