是否有可靠的方法来识别跨 Windows 平台的文件的文件类型?
我继承了一个使用 Shell32 GetDetailsOf 函数查询文件类型的程序,该函数返回本地化字符串并在使用非英语系统时导致错误(例如,在德语系统上 GetDetailsOf(item,9) 返回“Bild” “图像”)。
是否有可靠的方法来识别跨 Windows 平台的文件的文件类型?
我继承了一个使用 Shell32 GetDetailsOf 函数查询文件类型的程序,该函数返回本地化字符串并在使用非英语系统时导致错误(例如,在德语系统上 GetDetailsOf(item,9) 返回“Bild” “图像”)。
使用文件类型的文本描述不是识别特定文件类型的可靠方法。正如您所注意到的,描述字符串因语言而异,但它们也可以在一种语言中更改,具体取决于用户安装的软件(作为一个虚构的示例,.jpg 文件可能具有描述“JPEG 图像”在一个系统上,如果用户安装了声明文件类型并更改描述的软件,则在另一个系统上为“Adobe Photoshop Image”)。
相反,识别文件类型的最佳方法是查看文件的扩展名(.jpg
在我们的示例中)。然后你用它做什么取决于你,取决于你的应用程序。您可能只有一个硬编码的扩展名列表,或者更通用,您可以在注册表中查找文件类型的“感知类型”:
HKEY_CLASSES_ROOT\.jpg\PerceivedType
查看该值是否设置为“图像”、“音频”等。