Pregunta

Tengo algunas preguntas relacionadas:

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

2) La otra opción que estoy viendo es permitir que los usuarios decidan abrir con mi aplicación o restaurar 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?

¿Fue útil?

Solución

Con respecto a las asociaciones de archivos, he escrito una respuesta anterior que al menos cubre el " Cómo " .

Esto también debería indicarle en la dirección correcta cómo manejar 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 desee en su aplicación, y también restaurarlo desde allí.

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

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

EDITAR

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

Otros consejos

Puede implementar un "sobre la marcha" el cambio de asociación de archivo asociando un pequeño ejecutable con esa extensión de archivo que al inicio verificará 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 solo necesita modificar el registro una vez.

Los principales inconvenientes de este enfoque son:

  • necesitas un proceso auxiliar
  • la aplicación que '' posee '' estas extensiones de archivo pueden detectar el cambio y presentar una queja al usuario, lo que provoca "reparar" lo que lo saca de la escena.

Alternativamente, puede cambiar la asociación de archivos al iniciar su programa principal. Esto funcionará incluso para usuarios que no sean administradores. Si bien 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 '' shadow '' la asociación original de HKLM.

Por supuesto, desaconsejaría este enfoque, ya que solo se necesita un bloqueo en su aplicación para que esa asociación sea permanente y dado que muy pocas aplicaciones saben cómo tratar con 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 de registro cada vez que su aplicación se inicia y se detiene. Además, dependiendo de la frecuencia con la que lo haga, es posible que las nuevas asociaciones no se recojan en el explorador de Windows de inmediato.

Las asociaciones se enumeran en HKEY_CLASSES_ROOT en el registro y se pueden mapear de muchas maneras (tipos mime / progIDs / etc.).

Muchas aplicaciones que he visto le preguntan si desea asociar ciertos tipos de archivos con la aplicación durante el tiempo de instalación, y le permiten optar por no participar y dejar la configuración actual.

No creo que recomendaría "sobre la marcha" asociaciones de tipo de archivo

1) puede definir los tipos de archivo que se encuentran en la lista desplegable de tipo de archivo Abrir cuadro de diálogo. 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 mal, 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 por defecto permite al usuario elegir estas opciones utilizando el clic derecho y el " abrir con " mando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top