ファイル名の拡張子は、ファイルのコンテンツ タイプに関する最良のヒントを提供します。
完璧ではありませんが、以下を使用していくつかの成功を収めました。
private static string GetContentTypeFromRegistry(string file)
{
RegistryKey contentTypeKey = Registry.ClassesRoot.OpenSubKey(@"MIME\Database\Content Type");
foreach (string keyName in contentTypeKey.GetSubKeyNames())
{
if (System.IO.Path.GetExtension(file).ToLower().CompareTo((string)contentTypeKey.OpenSubKey(keyName).GetValue("Extension")) == 0)
{
return keyName;
}
}
return "unknown";
}
private static string GetFileExtensionFromRegistry(string contentType)
{
RegistryKey contentTypeKey = Registry.ClassesRoot.OpenSubKey(@"MIME\Database\Content Type\" + contentType);
if (contentTypeKey != null)
{
string extension = (string)contentTypeKey.GetValue("Extension");
if (extension != null)
{
return extension;
}
}
return String.Empty;
}