quitar que programas programa predeterminado para los inicio inician extensiones desinstalar desactivar deja cómo con como cambiar automatico asociar archivos abrir .net windows registry

.net - que - desactivar inicio automatico de programas windows 10



Windows: aplicaciones de lista y lanzamiento asociadas con una extensión (5)

Cómo determinar las aplicaciones asociadas a una extensión en particular (por ejemplo, .JPG) y luego determinar dónde se encuentra el ejecutable de esa aplicación para que pueda iniciarse mediante una llamada para decir System.Diagnostics.Process.Start (...).

Ya sé leer y escribir en el registro. Es el diseño del registro lo que hace más difícil determinar de manera estándar qué aplicaciones están asociadas con una extensión, qué nombres se muestran y dónde se encuentran sus ejecutables.


Código de muestra:

using System; using Microsoft.Win32; namespace GetAssociatedApp { class Program { static void Main(string[] args) { const string extPathTemplate = @"HKEY_CLASSES_ROOT/{0}"; const string cmdPathTemplate = @"HKEY_CLASSES_ROOT/{0}/shell/open/command"; // 1. Find out document type name for .jpeg files const string ext = ".jpeg"; var extPath = string.Format(extPathTemplate, ext); var docName = Registry.GetValue(extPath, string.Empty, string.Empty) as string; if (!string.IsNullOrEmpty(docName)) { // 2. Find out which command is associated with our extension var associatedCmdPath = string.Format(cmdPathTemplate, docName); var associatedCmd = Registry.GetValue(associatedCmdPath, string.Empty, string.Empty) as string; if (!string.IsNullOrEmpty(associatedCmd)) { Console.WriteLine("/"{0}/" command is associated with {1} extension", associatedCmd, ext); } } } } }



@aku: no olvide HKEY_CLASSES_ROOT / SystemFileAssociations /

No estoy seguro de si están expuestos en .NET, pero hay interfaces COM (IQueryAssociations y amigos) que se ocupan de esto, así que no tiene que ensuciar el registro y esperar que las cosas no cambien en la próxima versión de Windows


Como dijo Anders: es una buena idea usar la interfaz COM de IQueryAssociations. Aquí hay una muestra de pinvoke.net


También HKEY_CURRENT_USER / Software / Microsoft / Windows / CurrentVersion / Explorer / FileExts /

. Tecla EXT / OpenWithList para la lista "Ancho abierto ..." (valores de cadena ''a'', ''b'', ''c'', ''d'' etc. para las opciones)

. Tecla EXT / UserChoice para "Usar siempre el programa seleccionado para abrir este tipo de archivo" (valor del valor de la cadena ''Progid'')

Todos los valores son claves, utilizados de la misma manera que docName en el ejemplo anterior.