windows - 对于 Windows 文件类型, "Application.File"中的点有意义吗?

标签 windows file-association

在 Windows 上,我发现 Python 和许多其他程序使用 Python.File 的文件类型名称约定,带有点,而不是像 ApplicationFile (没有点),我也见过很多。点重要吗?干什么用的?

我正在开发一个项目,将其自己的文件类型添加到注册表中,并且希望做正确的事情,并知道为什么它是正确的事情。

编辑:我指的是文件类型,而不是(直接)文件扩展名。要继续 Python 示例,文件关联(扩展名)是:

C:\>assoc | find ".py"
.py=Python.File
.pyc=Python.CompiledFile
.pyo=Python.CompiledFile
.pyw=Python.NoConFile

它的文件类型是:

C:\>ftype | find "python"
Python.CompiledFile="C:\Python32\python.exe" "%1" %*
Python.File="C:\Python32\python.exe" "%1" %*
Python.NoConFile="C:\Python32\pythonw.exe" "%1" %*

这是我所追求的文件类型的最正确命名(上一个示例中 = 的左侧,第一个示例中的右侧)。

最佳答案

这些名称是 ProgIDs文件的。它们通常(尽管不是必需的)也是 COM 对象的 ProgID,该对象实现各种 shell 扩展接口(interface)来操作该文件类型;在这种情况下,根据将提供该对象的 COM 类型库的名称,按照惯例(尽管同样不是必需的)将对象命名为 LibraryName.ClassName。

如果您只想实现“运行此 exe 并在 argv[] 中传递文件名”的行为,则不需要 COM 对象,但最好选择一个对此目的有意义的名称,只需在如果您想要更复杂的功能(使用已经运行的实例打开,为搜索提供额外的元数据等)。实际上这并不是必需的(无论如何您都可以单独指定各种 Shell Extension Handlers ),它只是整洁。

关于windows - 对于 Windows 文件类型, "Application.File"中的点有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18465079/

相关文章:

java - winrun4j 自动检测 JVM

Java .jar 可执行文件未打开(双击)

java - 将文件类型与 Java Swing 应用程序相关联

windows - 是否可以从批处理文件启动文件的默认编辑器?

c++ - 如何将 Crypto++ 库添加到 Qt 项目中

windows - 我应该如何选择 Windows Server AMI 镜像作为 WAMP 堆栈与 AWS 免费套餐一起使用?

c# - 为文本 block 加载字符串资源 x :Uid in code behind

python - 运行python程序时出现"SyntaxError: Non-ASCII character '\xfe ' in file"错误

delphi - 如何找出打开具有自定义文件扩展名的文件所触发的文件的路径?

c# - 使用关联的应用程序打开文件