Как связать расширение файла к текущему исполняемому файлу в C#

Один или несколько ваших просмотров, созданных / зарегистрированных другим пользователем. Вам нужно будет проверить владельца представления и:

  1. Восстановить пользователя; как говорят другие ответы. или
  2. Восстановить представления, созданные пользователем 'web2vi', используя ALTER VIEW

У меня была эта проблема один раз.

Я пытался перенести представления из BD1 в BD2, используя SQLYog. SQLYog воссоздал представления в другой базе данных (DB2), но он сохранил пользователя BD1 (они разные). Позже я понял, что взгляды, которые я использовал в своем запросе, имели ту же ошибку, что и вы, даже когда я не создавал никакого представления.

Надеюсь, что эта помощь.

52
задан 16 September 2008 в 06:18
поделиться

5 ответов

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

Вот как создать ассоциацию расширений файлов с помощью встроенных инструментов установки Visual Studio:

  1. В существующем решении C # добавьте новый проект и выберите тип проекта Другие типы проектов - > Установка и развертывание -> Проект установки (или попробуйте Мастер установки)

  2. Настройте программу установки (для этого имеется множество документов, если вам нужна помощь)

  3. Право- щелкните проект установки в обозревателе решений, выберите Просмотр -> Типы файлов ,а затем добавьте расширение, которое вы хотите зарегистрировать вместе с программой для его запуска.

Этот метод имеет дополнительное преимущество очистки после себя, если пользователь запускает удаление вашего приложения.

7
ответ дан 7 November 2019 в 09:19
поделиться

Если вы используете развертывание ClickOnce, все это делается за вас (по крайней мере, в VS2008 SP1); просто:

  • Свойства проекта
  • Опубликовать
  • Параметры
  • Ассоциации файлов
  • (добавьте все, что вам нужно)

(обратите внимание, что он должен быть полностью доверительным, иметь целевой .NET 3.5 и быть установлен для автономного использования)

См. также MSDN: Практическое руководство. Создание ассоциаций файлов для приложения ClickOnce

12
ответ дан 7 November 2019 в 09:19
поделиться

Кроме того, если Вы решаете пойти реестром путь, иметь в виду, что текущие ассоциации пользователей находятся под HKEY_CURRENT_USER\Software\Classes. Могло бы быть лучше добавить Ваше приложение там вместо локальных классов машины.

, Если Ваша программа будет запущена ограниченными пользователями, Вы не будете в состоянии изменить CLASSES_ROOT так или иначе.

25
ответ дан Ishmaeel 7 November 2019 в 19:19
поделиться

Кажется, нет.Net API для непосредственно руководящих ассоциаций файлов, но можно использовать классы Реестра для чтения и записи ключей, Вы должны.

необходимо будет создать ключ под HKEY_CLASSES_ROOT с набором имени к расширению файла (например: ".txt"). Установите значение по умолчанию этого ключа к уникальному имени для Вашего типа файла, такого как "Высшая точка. TextFile". Тогда создайте другой ключ под HKEY_CLASSES_ROOT с набором имени к "Высшей точке. TextFile". Добавьте подключ по имени "DefaultIcon" и установите значение по умолчанию ключа к файлу, содержащему значок, который Вы хотите использовать для этого типа файла. Добавьте другой одноуровневый элемент, названный "оболочкой". Под ключом "оболочки" добавьте ключ для каждого действия, которое Вы хотите иметь в наличии через контекстное меню Explorer, устанавливая значение по умолчанию для каждого ключа к пути к Вашему исполняемому файлу, сопровождаемому пространством и "%1" для представления пути к выбранному файлу.

, Например, вот демонстрационный файл реестра для создания ассоциации между .txt файлами и EmEditor:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.txt]
@="emeditor.txt"

[HKEY_CLASSES_ROOT\emeditor.txt]
@="Text Document"

[HKEY_CLASSES_ROOT\emeditor.txt\DefaultIcon]
@="%SystemRoot%\\SysWow64\\imageres.dll,-102"

[HKEY_CLASSES_ROOT\emeditor.txt\shell]

[HKEY_CLASSES_ROOT\emeditor.txt\shell\open]

[HKEY_CLASSES_ROOT\emeditor.txt\shell\open\command]
@="\"C:\\Program Files\\EmEditor\\EMEDITOR.EXE\" \"%1\""

[HKEY_CLASSES_ROOT\emeditor.txt\shell\print]

[HKEY_CLASSES_ROOT\emeditor.txt\shell\print\command]
@="\"C:\\Program Files\\EmEditor\\EMEDITOR.EXE\" /p \"%1\""
40
ответ дан X-Cubed 7 November 2019 в 19:19
поделиться

Ассоциации файлов определяются в реестре под HKEY_CLASSES_ROOT.

существует пример VB.NET здесь , что я - Вы, может портировать легко на C#.

2
ответ дан Steve Morgan 7 November 2019 в 19:19
поделиться
Другие вопросы по тегам:

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