2

在 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" %*

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

4

1 回答 1

2

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

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

于 2013-08-27T12:24:08.867 回答