Windows 10 equivalente a LaunchAdvancedAssociationUI
winapi windows-10 (4)
Desde Windows 10, el método IApplicationAssociationRegistrationUI::LaunchAdvancedAssociationUI
ya no funciona.
En Windows Vista, 7 y 8, abre el Panel de control en la página Establecer asociaciones de programas para la aplicación especificada.
En Windows 10, solo muestra esta ventana emergente:
Para cambiar sus aplicaciones predeterminadas, vaya a Configuración> Sistema> Aplicaciones predeterminadas.
Captura de pantalla:
Incluso está documentado en MSDN:
Comenzando en Windows 10, esto no inicia el cuadro de diálogo de asociación. Muestra un cuadro de diálogo para el usuario que le informa que puede cambiar los programas predeterminados utilizados para abrir extensiones de archivo en su Configuración
¿Existe alguna manera alternativa de abrir la página Establecer asociaciones de programas para mi aplicación en Windows 10 mediante programación?
¿O hay otro enfoque recomendado para una aplicación que permita a sus usuarios personalizar asociaciones en Windows 10?
Estoy al tanto de estas soluciones parciales:
Abra la página Programas predeterminados del panel de control usando
%windir%/system32/control.exe /name Microsoft.DefaultPrograms
Pero el usuario tiene que hacer clic en Establecer sus programas predeterminados , ubicar mi aplicación en la lista y hacer clic en Elegir valores predeterminados para este programa .
¿Hay alguna manera de saltear al menos algunos de los pasos? Por ejemplo, ¿hay un nombre canónico para la página Establecer los programas predeterminados , o incluso mejor para una página específica de la aplicación?
Abra la página de aplicaciones predeterminadas en la aplicación de configuración con
IApplicationActivationManager
:Activator->ActivateApplication( L"windows.immersivecontrolpanel_cw5n1h2txyewy" L"!microsoft.windows.immersivecontrolpanel", L"page=SettingsPageAppsDefaults", AO_NONE, &pid);
(Código utilizado por Firefox en Windows 10; Chromium usa el mismo que el descrito por @Jichao )
El usuario puede acceder al panel de control utilizando el vínculo Establecer valores predeterminados por aplicación .
O use los enlaces Elegir aplicaciones predeterminadas por protocolo / tipo de archivo . Supongo que estos también se pueden abrir directamente mediante programación. Simplemente no sé una sintaxis. Uno tiene que, además de la página
SettingsPageAppsDefaults
especificar también la configuraciónSettingsPageAppsDefaultsProtocolView
(SettingsPageAppsDefaultsFileExtensionView
) y / o el grupoSettingsGroupDefaultApps
. No se como.
Cambiar las aplicaciones predeterminadas del sistema ya no está permitido. Aquí está el anuncio en el blog de Windows Insider :
Cambios en la forma en que Windows 10 maneja las aplicaciones predeterminadas: ''Aplicaciones predeterminadas'' se refiere a la forma en que Windows asigna tipos de archivos y protocolos (como HTTP) a las aplicaciones de Windows que abren por defecto. Por ejemplo, su editor de fotos favorito puede configurarse como la aplicación predeterminada para archivos .JPG, lo que significa que cuando hace doble clic en un archivo .JPG en el Explorador de archivos, se abre en ese editor de fotografías. En Windows 8.1, las aplicaciones clásicas de Windows (Win32) podrían invocar el mensaje pidiéndole que cambie sus valores predeterminados, por lo que puede haber visto varias solicitudes durante la instalación y después de su lanzamiento. Sin embargo, las aplicaciones de la Tienda Windows no pudieron invocar este mensaje. En su lugar, aparecerá una pancarta de notificación después de que se instalen sus aplicaciones informándole que hay nuevas aplicaciones disponibles y que haga clic en este banner para cambiar sus valores predeterminados.
Sabemos que tus fallas te importan. Con Windows 10, todas las aplicaciones, tanto las aplicaciones clásicas de Windows como las aplicaciones universales de Windows, no podrán invocar un aviso para cambiar los valores predeterminados, solo Windows. Usted mantiene el control total de sus experiencias predeterminadas, al tiempo que reduce parte del ruido no deseado que pueden generar varias indicaciones.
Incluso si hay alguna forma de iniciar la aplicación de configuración, no podrá hacer más.
Para abrir la página Establecer sus programas predeterminados :
%windir%/system32/control.exe /name Microsoft.DefaultPrograms /page pageDefaultProgram
Referencia: https://msdn.microsoft.com/en-us/library/windows/desktop/ee330741.aspx
Para abrir la página Elegir aplicaciones predeterminadas por tipo de archivo :
Activator->ActivateApplication(
L"windows.immersivecontrolpanel_cw5n1h2txyewy"
L"!microsoft.windows.immersivecontrolpanel",
L"page=SettingsPageAppsDefaults"
L"&target=SettingsPageAppsDefaultsFileExtensionView", AO_NONE, &pid);
Abra la ventana principal de Programas predeterminados en el Panel de control:
%windir%/system32/control.exe /name Microsoft.DefaultPrograms
Abra la página Establecer sus programas predeterminados :
%windir%/system32/control.exe /name Microsoft.DefaultPrograms /page pageDefaultProgram
Abra las asociaciones Establecer para una página de programa :
%windir%/system32/control.exe /name Microsoft.DefaultPrograms /page pageDefaultProgram/pageAdvancedSettings?pszAppName=YourAppRegName
YourAppRegName es el nombre de su aplicación registrada de HKEY_LOCAL_MACHINE ( o HKEY_CURRENT_USER ) / SOFTWARE / RegisteredApplications que deben escaparse (¡Use UrlEscape , Luke!) Antes de su uso. Por ejemplo:
%windir%/system32/control.exe /name Microsoft.DefaultPrograms /page pageDefaultProgram/pageAdvancedSettings?pszAppName=Internet%20Explorer
Abrir Asociar un tipo de archivo o protocolo con una página de programa :
%windir%/system32/control.exe /name Microsoft.DefaultPrograms /page pageFileAssoc
Abra la página de configuración de reproducción automática :
%windir%/system32/control.exe /name Microsoft.AutoPlay
Abrir el acceso al programa y la página de configuración predeterminada de la computadora :
%windir%/system32/ComputerDefaults.exe
PS También puede usar el método IOpenControlPanel::Open
para abrir el elemento / página del Panel de control en su lugar:
IOpenControlPanel * OpenControlPanel;
HRESULT Result =
CoCreateInstance(CLSID_OpenControlPanel,
NULL, CLSCTX_INPROC, __uuidof(IOpenControlPanel), (void**)&OpenControlPanel);
if (SUCCEEDED(Result))
{
const wchar_t * Page = L"pageDefaultProgram//pageAdvancedSettings?pszAppName=YourAppRegName";
OpenControlPanel->Open(L"Microsoft.DefaultPrograms", Page, NULL);
OpenControlPanel->Release();
}
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "%windir%/system32/control.exe /name Microsoft.DefaultPrograms /page pageDefaultProgram/pageAdvancedSettings?pszAppName=Internet%20Explorer"
'' Give Default Programs time to load
WScript.Sleep 1200
'' WshShell.AppActivate "Set Program Associations to IE then end for Windows 10 enjoy! ~ The Dogs Trust Rich ~"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys " "
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys " "
msgbox "Internet Explorer is now your default browser"
WScript.Quit