Adicionando associações de extensões de arquivos personalizadas

5

Eu quero adicionar minha própria extensão de arquivo personalizada no registro do win 7. E eu também quero adicionar uma opção de clique com o botão direito "Jogar com o xPlayer" para esta extensão.

Eu quero usá-lo no meu aplicativo c #. Como posso fazer isso usando o registro?

    
por Barun 08.02.2011 / 23:22

1 resposta

9

O MSDN tem extensa documentação sobre como trabalhar com extensões de arquivos no Registro. Comece com estes artigos:

Tipos de arquivos e associações de arquivos

Diretrizes para associações de arquivos e programas padrão

Atualização : Você precisaria criar as seguintes chaves do Registro e valores no mínimo (os registros de extensão de arquivo suportam MUITOS recursos):

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

Substitua HKEY_LOCAL_MACHINE se você quiser que sua extensão de arquivo seja acessível a todos os usuários no PC, em vez de apenas o usuário que está executando seu aplicativo / instalador.

Por exemplo:

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);

Alternativamente:

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();

Quando o aplicativo do player é iniciado, ele pode analisar seus parâmetros de linha de comando e, se vir um nome de arquivo, ele poderá reproduzir o arquivo conforme necessário.

    
por 08.02.2011 / 23:56