Windows 10等效的LaunchAdvancedAssociationUI

Windows 10以来, IApplicationAssociationRegistrationUI::LaunchAdvancedAssociationUI方法不再起作用。

在Windows Vista 7和8上,它将打开指定应用程序的“ 设置程序关联”页面上的“控制面板”。

在Windows 10上,它只显示这个popup窗口:

要更改您的默认应用程序,请转至设置>系统>默认应用程序。

截图:

在这里输入图像说明

它甚至logging在MSDN中:

从Windows 10开始,这不会启动关联对话框。 它向用户显示一个对话框,通知他们可以在设置中更改用于打开文件扩展名的默认程序


有没有一种替代方法来以编程方式在Windows 10中为我的应用程序打开“ 设置程序关联”页面?

还是有另一种方法build议应用程序允许其用户在Windows 10中自定义关联?


我知道这些部分的解决scheme:

  • 使用,打开控制面板的默认程序页面

     %windir%\system32\control.exe /name Microsoft.DefaultPrograms 

    但用户必须单击“ 设置默认程序” ,在列表中find我的应用程序,然后单击“ select此程序的默认值”

    有没有办法跳过至less一些步骤? 例如, 设置默认程序页面是否有一个规范名称,或者对于特定于应用程序的页面更好?

  • 使用IApplicationActivationManager打开设置应用程序中的默认应用程序页面:

     Activator->ActivateApplication( L"windows.immersivecontrolpanel_cw5n1h2txyewy" L"!microsoft.windows.immersivecontrolpanel", L"page=SettingsPageAppsDefaults", AO_NONE, &pid); 

    (Windows 10上的Firefox使用的代码; Chromium使用与@Jichao评论相同的代码 )

    然后,用户可以使用按应用链接设置默认值访问控制面板。

    或者使用按协议/文件types链接select默认应用程序 。 我认为这些也可以通过程序直接打开。 我只是不知道一个语法。 除了SettingsPageAppsDefaults页之外,还必须指定SettingsPageAppsDefaultsProtocolViewSettingsPageAppsDefaultsFileExtensionView )和/或SettingsGroupDefaultApps组。 我不知道怎么。

  • 在“控制面板”中打开主“ 默认程序”窗口:

    %windir%\system32\control.exe /name Microsoft.DefaultPrograms

  • 打开设置您的默认程序页面:

    %windir%\system32\control.exe /name Microsoft.DefaultPrograms /page pageDefaultProgram

  • 打开程序页面的设置关联

    %windir%\system32\control.exe /name Microsoft.DefaultPrograms /page pageDefaultProgram\pageAdvancedSettings?pszAppName=YourAppRegName

    YourAppRegName是从HKEY_LOCAL_MACHINE HKEY_CURRENT_USER\ SOFTWARE \ RegisteredApplications注册的应用程序的名称,必须在使用前转义(使用UrlEscape ,Luke!)。 例如:

    %windir%\system32\control.exe /name Microsoft.DefaultPrograms /page pageDefaultProgram\pageAdvancedSettings?pszAppName=Internet%20Explorer

  • 打开将文件类型或协议与程序页面关联

    %windir%\system32\control.exe /name Microsoft.DefaultPrograms /page pageFileAssoc

  • 打开更改自动播放设置页面:

    %windir%\system32\control.exe /name Microsoft.AutoPlay

  • 打开设置程序访问和计算机默认值页面:

    %windir%\system32\ComputerDefaults.exe

PS也可以使用IOpenControlPanel::Open方法来打开控制面板项目/页面:

 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(); } 

要打开设置您的默认程序页面:

 %windir%\system32\control.exe /name Microsoft.DefaultPrograms /page pageDefaultProgram 

参考: https : //msdn.microsoft.com/en-us/library/windows/desktop/ee330741.aspx


打开“按文件类型选择默认应用程序”页面:

 Activator->ActivateApplication( L"windows.immersivecontrolpanel_cw5n1h2txyewy" L"!microsoft.windows.immersivecontrolpanel", L"page=SettingsPageAppsDefaults" L"&target=SettingsPageAppsDefaultsFileExtensionView", AO_NONE, &pid); 

更改系统默认应用程序不再允许。 以下是Windows内幕博客上的公告 :

Windows 10如何处理默认应用程序的变化:“默认应用程序”是指Windows将文件类型和协议(如HTTP)映射到默认打开的Windows应用程序的方式。 例如,您最喜欢的照片编辑器可能被设置为.JPG文件的默认应用程序,这意味着当您双击文件资源管理器中的.JPG文件时,它会在该照片编辑器中打开。 在Windows 8.1中,经典Windows应用程序(Win32)可能会调用提示,要求您更改默认设置,以便在安装期间以及启动后可能看到多个提示。 但是,Windows应用商店应用程序无法调用此提示。 相反,在安装应用程序后会出现通知横幅,告诉您新的应用程序可用,您可以点击此横幅来更改默认设置。

我们知道您的默认值对您很重要。 使用Windows 10时,所有应用程序(包括经典Windows应用程序和通用Windows应用程序)都将无法调用提示来更改默认设置,仅Windows。 您可以完全控制您的默认体验,同时减少多个提示可能带来的不必要噪音。

即使有一些方法来启动设置应用程序,你将无法做更多的事情。

 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