Как связать файлы SDF (sqlCE) с моей программой C#?

Я сделал программу на С#, которая открывает и показывает файлы sdf (sqlCE).

Как сделать так, чтобы (при установке моей программы) все файлы *.sdf

на моем компьютере будет открыта с моей программой?

Заранее спасибо.


person Gali    schedule 21.04.2011    source источник
comment
Что вы используете в качестве упаковщика?   -  person Ishmael    schedule 21.04.2011
comment
ClickOnce предоставляет простой способ настроить это из Visual Studio.   -  person Fantius    schedule 21.04.2011


Ответы (1)


Полный пример, который вы можете легко использовать: C# Set Ассоциация типов файлов

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

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

[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\""

Ответить здесь.< /а>

Поэтому вы должны отредактировать реестр при установке. Используйте пространство имен Microsoft.Win32 для редактирования/добавления/удаления реестра Ключи.

person Danpe    schedule 21.04.2011
comment
спасибо за помощь!, но я не понял - если мне нужно, то моя программа в (d:\OpenSDF.exe) откроет все файлы *.sdf на моем компьютере. что мне нужно изменить в этом файле? - person Gali; 22.04.2011
comment
@Gali Посмотрите на эту ссылку. Затем используйте этот код: if (!FileAssociation.IsAssociated(".sdf")) Associate(".sdf", "ClassID.ProgID", "sdf File", "YourIcon.ico", "D:\OpenSDF.exe"); - person Danpe; 22.04.2011
comment
извините, это работает !!!, но что делать, если .sdf был связан с другой программой? - person Gali; 22.04.2011
comment
и как я могу изменить связанный файл на новый? - person Gali; 22.04.2011
comment
Просто используйте if (!FileAssociation.IsAssociated(".sdf")) Associate(".sdf", "ClassID.ProgID", "sdf File", "YourIcon.ico", "D:\DifferentProgram.exe"); - person Danpe; 24.04.2011