var reg: TRegistry; ext: String; list: TStringList; begin Result := ''; ext := LowerCase(ExtractFileExt(Filename)); reg := TRegistry.Create; try reg.RootKey := HKEY_CLASSES_ROOT; if reg.OpenKeyReadOnly('\' + ext) then begin Result := reg.ReadString('Content Type'); reg.CloseKey; end; if Result = '' then begin if reg.OpenKeyReadOnly('\MIME\Database\Content Type') then begin list := TStringList.Create; try reg.GetKeyNames(list); for i := 0 to list.Count - 1 do begin if Reg.OpenKeyReadOnly('\MIME\Database\Content Type\' + list[i]) then begin if AnsiSameText(ext, reg.ReadString('Extension')) then begin Result := list[i]; Break; end; end; end; finally list.Free; end; reg.CloseKey; end; end; finally reg.Free; end; if Result = '' then Result := 'application/octet-stream'; end;