о файле, к примеру у меня лежит doc файл, мне нужно програмно вывести что это Document — Microsoft Office Word. Это можно достать с системы или нет?
forensics docs => google
Берете https://docs.microsoft.com/en-us/dotnet/api/system.io.path.getextension?view=net-5.0 этот метод и потом в коде себе создаете словарик типа: Dictionary<extension type, executable program name> и мапите
Ну так мне самому нужно же делать этот словарь, а я имею ввиду получить эту информацию от системы
Есть такой раздел в регистре системы, если это шиндовс
Ну дело в том что это кроссплатформа и в FileInfo не слово об этом
#if OS = Windows <algh for windows> #If Ну вы поняли
Я думал формата в файле нет🤔
ахах) Та понятно) Ладно, буду искать. Я так понял тут только в реестр лезть, а на юникс системах искать файлик и забирать от туда инфу ?
Да, в ванильном юниксе должно быть https://t.me/DotNetRuChat/954674, правда это еще от дистрибутива зависит, для шиндовс все верно
А так то этим занимается explorer
Ну меня пока линуксы не интересуют, только макось и винда
В общем я думаю я ответил на ваш вопрос - это ни в каком заголовке самого исполняемого файла не хранится, за это отвечает ОС
Я понимаю это, но почему то я был уверен в том что я могу без проблем достать эту инфу дёрнув какой то класс, но получается что такого нет...
тут надо вынимать из системы данные с чем файл ассоциирован, он может и не быть ассоциирован с вордом...
Есть вариант для windows - https://stackoverflow.com/a/6723730
@vlad_turchack Кстати, только учтите, что тогда вашу программу пользователю придется запускать с правами админа, что бы это работало
В любом случае так придётся делать, потому что программа сканирует полностью файловую систему, и те разделы которые простым смертным недоступны
Ок, тогда все в порядке ?
Да, я поговорил с клиентом и мы приняли решение что сделаем сами словарь, и дадим пользователю возможность его модифицировать.
Хех, но ведь можно было автоматизировать, достаточно немного повозиться
А для чего конкретнее это надо? Если для того, чтобы открывать потом файл в заданной по умолчанию программе, то вроде достаточно Process.Start("/file/path") сделать
Не, это нужно для отображения
Тогда звучит логичнее использовать MIME тип, не? Или там прям железно надо показывать что у пользователя, и если у него LibreOffice, то показывать MS Word Document не прокатит?
А что пользователь будет редактировать?
Обсуждают сегодня