Me refiero específicamente a Windows 7.Windows 7 archivo de asociación de extensión
tengo código que asocia una cierta extensión con mi solicitud según lo propuesto por webJose en la siguiente página: What registry keys are responsible for file extension association? (i Sin embargo escribo correctamente a HKEY_CURRENT_USER \ Software \ Classes en lugar de HKEY_CLASSES_ROOT como se sugiere)
Lo anterior funciona inicialmente, o si no hay otros programas asociados con la extensión. Sin embargo, después de usar Windows 7 incorporado "Elija el programa predeterminado ..." (que se encuentra debajo del menú contextual de archivo-clic derecho debajo de "Abrir con") vuelve a asociar la extensión con cualquier programa nuevo que elija.
Lo que sucede en este punto es que "HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \\ UserChoice" es modificado por el sistema, por lo que el programa recién seleccionado se hace cargo.
Ejecutando el código anterior, para recuperar el control sobre la extensión no funcionará. La única manera de recuperar el control, es ya sea:
- Edición del UserChoice -> valor Progid, que no está permitido (ni programación ni mediante regedit.exe - acceso denegado).
- o borrar el valor de UserChoice y asegurándose de que su aplicación es la primera en el valor MRUList en \ OpenWithList (esto se puede lograr mediante regedit.exe pero no mediante programación)
Mi pregunta es: ¿Hay alguna manera para lograr esto programáticamente? ¿Qué valores de registro se pueden cambiar para recuperar el control de una extensión, después de que se asocie con otro programa?
Sé que podría parecer obvio que si un usuario a través del explorador establece la aplicación asociada a una extensión, se esperaría que lo haga de la misma manera para volver a asociar la extensión a una aplicación diferente.
El problema, sin embargo, es que tengo un botón en mi aplicación que usa el código mencionado anteriormente para verificar la asociación de extensiones con mi aplicación. Lamentablemente con la situación anterior, mi aplicación muestra un mensaje que confirma que la extensión ya está asociada correctamente cuando no es así. Entonces, ¿hay una forma de evitar esto?
No se puede eliminar la clave de ninguna manera mediante programación, incluso con grabaciones de administrador. ¿Cuál es el motivo de mi pregunta anterior, cómo puedo eliminarla? – Tamer
Esa es una peculiaridad de su sistema, no un estándar de Windows. Algún software que ha instalado ha cambiado el acl de la clave para evitar que la cambie ... probablemente lo que se haya registrado en UserChoice. Sin embargo, debe poder acceder y luego eliminarlo. –
¿Puedes confirmar esto? Ahora lo he probado en varias máquinas que ejecutan la aplicación como administrador. El acceso a esa clave específica "UserChoice" se niega mediante programación (ni escribir ni eliminar). ¿Estás diciendo que puedes editar programáticamente los valores de esta clave en tu máquina? ¿Puede alguien por favor confirmar esto? – Tamer