Shell32 GetDetailsOf本地化问题

时间:2013-03-25 17:19:39

标签: winapi

是否有可靠的方法在Windows平台上识别文件的文件类型?

我继承了一个使用Shell32 GetDetailsOf函数查询文件类型的程序,该函数返回本地化字符串并在使用非英语系统时导致错误(例如,在德语系统上GetDetailsOf(item,9)返回“ Bild“而不是”Image“)。

1 个答案:

答案 0 :(得分:2)

使用文件类型的文本描述不是识别特定类型文件的可靠方法。正如您已经注意到,描述字符串从一种语言变为另一种语言,但它们也可以根据用户安装的软件在一种语言中进行更改(作为一个组成示例,.jpg文件可能具有描述“JPEG图像”如果用户安装了声明文件类型并更改说明的软件,则在另一个系统上使用“Adobe Photoshop Image”。

相反,识别文件类型的最佳方法是查看文件的扩展名(在我们的示例中为.jpg)。你用它做什么取决于你,取决于你的应用程序。您可能只有一个硬编码的扩展列表,您可以使用它,或者更通用,您可以在注册表中查找文件类型的“感知类型”:

  

HKEY_CLASSES_ROOT \ .JPG \ PerceivedType

查看该值是否设置为“图像”,“音频”等