Windowsプラットフォーム間でファイルのファイルタイプを識別する信頼できる方法はありますか?
Shell32 GetDetailsOf関数を使用してファイルタイプをクエリするプログラムを継承しました。このプログラムは、ローカライズされた文字列を返し、英語以外のシステムが使用されている場合はエラーを引き起こします(たとえば、ドイツ語のシステムでは、GetDetailsOf(item、9)は代わりに「Bild」を返します「画像」の)。
Windowsプラットフォーム間でファイルのファイルタイプを識別する信頼できる方法はありますか?
Shell32 GetDetailsOf関数を使用してファイルタイプをクエリするプログラムを継承しました。このプログラムは、ローカライズされた文字列を返し、英語以外のシステムが使用されている場合はエラーを引き起こします(たとえば、ドイツ語のシステムでは、GetDetailsOf(item、9)は代わりに「Bild」を返します「画像」の)。
ファイルタイプのテキストによる説明を使用することは、特定のタイプのファイルを識別する信頼できる方法ではありません。説明文字列は言語ごとに異なりますが、ユーザーがインストールしたソフトウェアによっては1つの言語内でも変わる可能性があります(作成例として、.jpgファイルには「JPEG画像」という説明が含まれている場合があります)。あるシステムでは「AdobePhotoshopImage」、ユーザーがファイルタイプを要求して説明を変更するソフトウェアをインストールしている場合は別のシステムで「AdobePhotoshopImage」)。
代わりに、ファイルタイプを識別する最良の方法は、ファイルの拡張子(.jpg
この例では)を確認することです。それであなたがそれをどうするかはあなた次第であり、あなたのアプリケーションに依存します。使用する拡張機能のハードコードされたリストがある場合もあれば、より一般的には、レジストリでファイルタイプの「認識されるタイプ」を探すこともできます。
HKEY_CLASSES_ROOT \ .jpg \ PerceivedType
その値が「image」、「audio」などに設定されているかどうかを確認します。