Por otro lado ya que nos ponemos a asociar el archivo queda muy elegante asociar el icono de nuestra aplicación a la extensión asociada, para ello podemos agregar la clave HKEY_CLASSES_ROOTrxrfileDefaultIcon y establecer el valor con la ruta del ejecutable y agregar, 0 al final.
/// <summary>
/// Asociar una extensi¢n de archivo a una aplicación
/// </summary>
/// <param name=»extension»>Extensión a asociar</param>
/// <param name=»aplicacion»>Aplicación a ejecutar</param>
private void AsociarArchivo(string extension, string aplicacion)
{
//Creamos la key en HKEY_CLASSES_ROOT
RegistryKey key1declaracion = Registry.ClassesRoot.CreateSubKey(«.» + extension);
key1declaracion.SetValue(«Default», extension + «file»);
//Creamos las siguientes claves en
//HKEY_CLASSES_ROOTxxxfileShellOpenCommand
RegistryKey key2asociacion = Registry.ClassesRoot.CreateSubKey(@»» + extension + «file» + @»ShellOpenCommand»);
// Establecemos el valor por defecto a la ruta al ejecutable a asociar,
// %1 ser el parametro con el que se iniciar la aplicación y
// equivaldr al path del archivo.
key2asociacion.SetValue(«Default»,@»»»» + aplicacion + @»»» «»%1″»»);
//Asociamos el icono de nuestro ejecutable a la extensi¢n asociada
RegistryKey key3Icono = Registry.ClassesRoot.CreateSubKey(@»» + extension + «file» + @»DefaultIcon»);
key3Icono.SetValue(«Default», @»»»» + aplicacion + @»»»» + «0»);
}
Podéis encontrar una solución con el código fuente completo para Visual Studio 2008 (SDK WM5) en el siguiente enlace: Asociar extensiones en WM
Un saludo a todos
José Antonio Gallego