Cómo excluir una aplicación del cuadro de diálogo Abrir con para tipos de archivo no asociados
Cuando un usuario intenta abrir un archivo que no es miembro de ningún tipo de archivo registrado (es decir, un tipo de archivo desconocido), o cuando un usuario selecciona Abrir con o Abrir con -> Elegir programa predeterminado en el menú contextual de un archivo, shell presenta un submenú o cuadro de diálogo que permite al usuario especificar el programa usado para abrir el archivo.
De forma predeterminada, cualquier aplicación registrada como subclave de HKEY_CLASSES_ROOT\Aplicaciones se presenta en el cuadro de diálogo Abrir con . Estas aplicaciones se presentan en Open con independientemente de si la aplicación está registrada para controlar el tipo de archivo.
Para evitar que una aplicación aparezca en el cuadro de diálogo Abrir con cuando la aplicación no debe o no se pueda usar para abrir determinados tipos de archivo, use una de las dos técnicas descritas en este tema.
Instrucciones
Paso 1:
Agregue una entrada NoOpenWith a la subclave de la aplicación. Cuando una aplicación usa un tipo de archivo, Windows registra esa información para compilar la lista Programas recomendados . Esta lista se presenta en el submenú Abrir con , como se muestra en la captura de pantalla siguiente.
Estas aplicaciones recomendadas también se muestran en la parte Programas recomendados del cuadro de diálogo Abrir con , como se muestra en la siguiente captura de pantalla.
Nota
Si una aplicación se ha registrado en OpenWithList o OpenWithProgIDs para el tipo de archivo, aparecerá en la lista Programas recomendados incluso si se establece la entrada NoOpenWith. Además, recuerde que, independientemente de si una aplicación se ofrece en una lista de programas recomendados, un usuario puede ir manualmente a cualquier archivo ejecutable.
Las aplicaciones pueden deshabilitar este seguimiento especificando un valor NoOpenWith en la subclave de la aplicación.
La entrada NoOpenWith es un valor de REG_SZ vacío, como se muestra en el ejemplo siguiente.
HKEY_CLASSES_ROOT
Applications
MyProgram.exe
NoOpenWith
Establecer la entrada NoOpenWith también tiene estos efectos:
- Impide anclar un archivo a la lista de accesos directos de la aplicación mediante arrastrar y colocar, a menos que la aplicación esté registrada específicamente para controlar ese tipo de archivo.
- Impide que el cuadro de diálogo de archivo común y cualquier llamada a la función SHAddToRecentDocs agregue cualquier archivo a la lista de accesos directos de la aplicación, a menos que la aplicación esté registrada específicamente para controlar ese tipo de archivo.
Paso 2:
La segunda forma de evitar que una aplicación aparezca en el cuadro de diálogo Abrir con es usar la subclave SupportedTypes para enumerar explícitamente las extensiones de tipos de archivo que la aplicación puede abrir. Esto impide que la aplicación aparezca en el cuadro de diálogo Abrir con para los tipos de archivo que no se pueden abrir. También hace que la aplicación aparezca en la lista Programas recomendados como se explicó anteriormente.
Este método es especialmente útil si una aplicación puede guardar un archivo como un tipo de archivo determinado, pero no puede abrir ese tipo de archivo. Una aplicación también debe establecer la marca de FOS_DONTADDTORECENT a través de IFileDialog::SetOptions al llamar al cuadro de diálogo Guardar . Esto evita que el elemento se agregue a las partes recientes o frecuentes de una lista de accesos directos. También impide que se realice el seguimiento de la aplicación en OpenWithList.
Cada extensión admitida se agrega como una entrada en la subclave SupportedTypes , como se muestra en el ejemplo siguiente. Las entradas son de tipo REG_SZ o REG_NULL, sin valores asociados.
HKEY_CLASSES_ROOT
Applications
ApplicationName
SupportedTypes
.ext1
.ext2
.ext3
Si se proporciona una subclave SupportedTypes , solo los archivos con esas extensiones son aptos para anclar a la lista de accesos directos de la aplicación o para realizar el seguimiento en la lista de destinos recientes o frecuentes de una aplicación.
La entrada NoOpenWith invalida la subclave SupportedTypes y oculta la aplicación en el cuadro de diálogo Abrir con .