Связь типа файла с приложением (C#)

Используйте Perl

$ perl -0777 -lne ' while(/"name":\s+"ABC",\s+"location":\s+(\S+)/msg) { print "$1\n" } ' output.json
"NewYork",
$ cat output.json
{"project": {"id": "A", "content": [{"name": "XYZ", "location": "Berlin", "comments":""}, {"name": "ABC", "location": "NewYork", "comments": "Hwllo"}, {"name": "DEF", "location": "Paris", "comments": "Success"}]}}
$
8
задан Bill the Lizard 24 March 2011 в 01:33
поделиться

4 ответа

Относительно ассоциаций файлов я имею, записал ответ ранее, который, по крайней мере, касается "Как".

Это должно также указать на Вас на правильное направление, как обработать резервное копирование и восстановление. С прямым доступом к реестру через c# не будет никакой потребности использовать .reg файлы, таким образом, Вы будете свободны создать резервную копию предыдущего значения однако, Вы любите в своем приложении и также восстанавливаете его оттуда.

Ключевой вопрос здесь: необходимо ли изменить ассоциации файлов случайным образом? По крайней мере, выяснение у пользователя заранее, очевидно, было бы необходимо (как Вы также указали).

Кроме того, пользователи Vista с контролем учётных записей включили, или у непривилегированных пользователей других версий Windows не может быть необходимого разрешения изменить глобальные ассоциации файлов. (ООН) процесс установки Вашей программы может быть единственным местом, где это может успешно выполниться.

Править

Как Franci Penov указал в своем ответе, существует способ изменить локальные ассоциации файлов на основе в расчете на пользователя, даже для неадминистраторов (вот почему, я говорил о "глобальных ассоциациях" в предыдущем абзаце). Он также упомянул упомянутый почему движение, там не чрезмерно желательно.

7
ответ дан 5 December 2019 в 13:02
поделиться

Можно реализовать "динамическое" изменение ассоциации файлов путем соединения маленького исполняемого файла с тем расширением файла, которое на запуск проверит, работает ли главное приложение, и передайте имя файла ему или если это не работает, это вызовет "обычное" связанное приложение.

Основное преимущество этого подхода состоит в том, что необходимо унавозить с реестром только однажды.

Основные недостатки этого подхода:

  • Вам нужен процесс помощника
  • приложение, которое "владеет" этими расширениями файла, может обнаружить изменение и жаловаться пользователю, запрашивая "восстановление", таким образом вытаскивающее Вас из изображения.

С другой стороны, Вы могли измениться, ассоциация файлов согласно Вашей основной программе запускаются. Это будет работать даже на неадминистраторских пользователей. в то время как ассоциации файлов хранятся в HKEY_CLASSES_ROOT, существует маленький прием - HKCR является на самом деле картой обоих HKEY_LOCAL_MACHINE\SOFTWARE\Classes и HKEY_CURRENT_USER\SOFTWARE\Classes. Таким образом можно временно зарегистрировать расширение файла для текущего пользователя в HKCU и "тени" исходная ассоциация от HKLM.

Конечно, я отговорил бы от этого подхода, хотя, поскольку требуется всего один катастрофический отказ в Вашем приложении для создания той ассоциации постоянной и так как очень немного приложений знают, как иметь дело с ассоциациями файлов в HKCU, возможности, это будет неисправимая ситуация для исходного приложения.

3
ответ дан 5 December 2019 в 13:02
поделиться

1) Вы добираетесь для определения типов файлов, которые находятся в открыть типе файла Dialog droplist. За пределами этого возможно изменить значение по умолчанию типа файла на открытом приложении, и затем заменить во время приложения близко, поскольку ассоциация типа файла является просто установкой реестра.

Что касается несправедливости, я не был бы. Первая причина состоит в том, что это не стандартное поведение приложений. Вторая причина состоит в том, что, если Ваше приложение или ПК неожиданно выходят, Вы рискуете не возвращать ассоциацию, он - исходная установка.

2) Windows по умолчанию позволяет пользователю выбирать эти опции, использующие щелчок правой кнопкой и "открытый с" командой.

1
ответ дан 5 December 2019 в 13:02
поделиться

Это может, вероятно, быть сделано, но я думаю, что это закончило бы тем, что было громоздким. Все ассоциации типа файла хранятся в реестре, таким образом, необходимо было бы писать/возвращаться ключам реестра каждый раз, когда приложение запускается и останавливается. Кроме того, в зависимости от того, как часто Вы делаете это, новые ассоциации не могут быть сразу взяты в Windows Explorer.

Ассоциации перечислены под HKEY_CLASSES_ROOT в реестре и могут быть отображены целое несметное число путей (типы/проценурозы/и т.д. пантомимы).

Много приложений, которые я видел, спрашивают, хотите ли Вы связать определенные типы файлов с приложением в течение времени установки, и дать Вам способность к уклонению и оставить текущие настройки.

Я не думаю, что рекомендовал бы "динамические" ассоциации типа файла

2
ответ дан 5 December 2019 в 13:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: