Asociación de tipo de archivo con la aplicación (C #)

Tengo algunas preguntas relacionadas:

1) ¿Es posible hacer que mi progtwig cambie la asociación del tipo de archivo pero solo cuando se está ejecutando? ¿Ves algo mal con este comportamiento?

2) La otra opción que estoy viendo es permitir que los usuarios decidan abrir con mi aplicación o restablecer la asociación predeterminada … algo así como: “capturar todos los archivos .lala” o “restaurar la asociación .lala”. ¿Cómo puedo hacer esto? ¿Cuál crees que es el mejor enfoque?

En cuanto a las asociaciones de archivos, he escrito una respuesta anterior que al menos cubre el “Cómo” .

Esto también debería indicarle la dirección correcta sobre cómo gestionar la copia de seguridad y la restauración. Con el acceso directo al registro a través de c #, no será necesario usar archivos .reg, por lo que puede hacer una copia de seguridad del valor anterior como prefiera en su aplicación, y también restaurarlo desde allí.

La pregunta clave aquí es: ¿Deberías cambiar las asociaciones de archivos al azar? Por lo menos, preguntar al usuario por adelantado sería obviamente necesario (como también lo indicó).

Además, los usuarios de Vista con UAC habilitado o usuarios no privilegiados de otras versiones de Windows pueden no tener el permiso requerido para cambiar asociaciones de archivos globales. El procedimiento de instalación (des) de su progtwig puede ser el único lugar donde esto puede tener éxito.

EDITAR

Como Franci Penov indicó en su respuesta , hay una manera de cambiar las asociaciones de archivos locales por usuario, incluso para los que no son administradores (por eso hablé de “asociaciones globales” en el párrafo anterior). También mencionó que no es aconsejable ir allí.

Puede implementar un cambio de asociación de archivos “sobre la marcha” asociando un pequeño ejecutable con esa extensión de archivo que al inicio comprobará si su aplicación principal se está ejecutando y le pasará el nombre del archivo o si no se está ejecutando, invocará el ” regular “aplicación asociada.

La principal ventaja de este enfoque es que necesita revisar el registro solo una vez.

Los principales inconvenientes de este enfoque son:

  • necesitas un proceso de ayuda
  • la aplicación que “posee” estas extensiones de archivos puede detectar el cambio y quejarse ante el usuario, lo que provoca “reparación” y lo saca de la escena.

Alternativamente, puede cambiar la asociación del archivo al inicio de su progtwig principal. Esto funcionará incluso para usuarios que no sean administradores. mientras que las asociaciones de archivos se almacenan en HKEY_CLASSES_ROOT , hay un pequeño truco: HKCR es en realidad un mapa de HKEY_LOCAL_MACHINE\SOFTWARE\Classes y HKEY_CURRENT_USER\SOFTWARE\Classes . Por lo tanto, puede registrar temporalmente la extensión de archivo para el usuario actual en HKCU y “sombrear” la asociación original de HKLM.

Por supuesto, desaconsejaría este enfoque, ya que solo hace falta un locking en su aplicación para hacer que esa asociación sea permanente y, dado que muy pocas aplicaciones saben cómo manejar las asociaciones de archivos en HKCU, es probable que sea una situación irrecuperable para la aplicación original.

Probablemente se pueda hacer, pero creo que terminaría siendo engorroso. Todas las asociaciones de tipo de archivo se almacenan en el registro, por lo que tendría que escribir / revertir las entradas del registro cada vez que se inicia y se detiene su aplicación. Además, dependiendo de la frecuencia con que lo haga, las nuevas asociaciones pueden no ser recogidas inmediatamente en el explorador de Windows.

Las asociaciones se enumeran bajo HKEY_CLASSES_ROOT en el registro y se pueden mapear una gran cantidad de formas (tipos de mime / progIDs / etc).

Muchas aplicaciones que he visto preguntan si desea asociar ciertos tipos de archivos con la aplicación durante el tiempo de instalación, y le dan la posibilidad de darse de baja y dejar la configuración actual.

No creo que recomiende asociaciones de tipo de archivo “sobre la marcha”

1) puede definir los tipos de archivo que están en la lista desplegable de tipo de archivo de diálogo Abrir. Fuera de eso, es posible cambiar el tipo de archivo predeterminado en la aplicación abierta, y luego reemplazarlo durante el cierre de la aplicación, ya que la asociación del tipo de archivo es solo una configuración de registro.

En cuanto al error, no lo haría. La primera razón es que no es el comportamiento estándar de las aplicaciones. La segunda razón es que si su aplicación o PC se cierra inesperadamente, corre el riesgo de no devolver la asociación a su configuración original.

2) Windows de forma predeterminada permite al usuario elegir estas opciones utilizando el clic derecho y el comando “abrir con”.