5

Я хочу добавить свое собственное расширение файла в реестр win 7. И я также хочу добавить опцию правой кнопки мыши "Play with xPlayer" для этого расширения.

Я хочу использовать его в моем приложении C #. Как я могу сделать это с помощью реестра?

1 ответ1

9

MSDN имеет обширную документацию о том, как работать с расширениями файлов в реестре. Начните с этих статей:

Типы файлов и ассоциации файлов

Рекомендации по сопоставлению файлов и программ по умолчанию

Обновление: вам нужно будет создать следующие ключи и значения реестра как минимум (регистрации расширений файлов поддерживают множество функций):

HKEY_CURRENT_USER\Software\Classes\.myext
(Default) = "MyAppExt"

HKEY_CURRENT_USER\Software\Classes\MyAppExt\shell\PlayWithXPlayer
(Default) = "Play with xPlayer"

HKEY_CURRENT_USER\Software\Classes\MyAppExt\shell\PlayWithXPlayer\command
(Default) = ""c:\path to\xplayer.exe" "%1""

Замените HKEY_LOCAL_MACHINE если вы хотите, чтобы расширение вашего файла было доступно для всех пользователей на ПК, а не только для пользователя, который запускает ваше приложение / установщик.

Например:

using System;
using Microsoft.Win32;

// substitute "HKEY_LOCAL_MACHINE" if needed...
Registry.SetValue("HKEY_CURRENT_USER\\Software\\Classes\\.xpl", "", "xPlayer", RegistryValueKind.String);
Registry.SetValue("HKEY_CURRENT_USER\\Software\\Classes\\xPlayer\\shell\\PlayWithXPlayer", "", "Play with xPlayer", RegistryValueKind.String);
Registry.SetValue("HKEY_CURRENT_USER\\Software\\Classes\\xPlayer\\shell\\PlayWithXPlayer\\command", "", "\"c:\\path to\\xplayer.exe\" \"%1\"", RegistryValueKind.String);

В качестве альтернативы:

using System;
using Microsoft.Win32;

// substitute Registry.LocalMachine if needed...
RegistryKey rkRootKey = Registry.CurrentUser;

RegistryKey rk = rkRootKey.CreateSubKey("Software\\Classes\\.xpl");
rk.SetValue("", "xPlayer", RegistryValueKind.String);
rk.Close();

rk = rkRootKey.CreateSubKey("Software\\Classes\\xPlayer\\shell\\PlayWithXPlayer");
rk.SetValue("", "Play with xPlayer", RegistryValueKind.String);

RegistryKey rk2 = rk.CreateSubKey("command");
rk2.SetValue("", "\"c:\\path to\\xplayer.exe\" \"%1\"", RegistryValueKind.String);
rk2.Close();

rk.Close();

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .