Windows 10相当于LaunchAdvancedAssociationUI

Mar*_*ryl 22 windows winapi controlpanel windows-shell windows-10

从Windows 10开始,该IApplicationAssociationRegistrationUI::LaunchAdvancedAssociationUI方法不再起作用.

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

在Windows 10上,它什么都不做.

它甚至记录在MSDN中:

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

(即使在当前版本的Windows 10中声明的第二部分也不再正确)


实际上,在Windows 10的最新版本中,控制面板不再存在.其功能已移至"应用" >"默认应用">"应用设置默认值">"应用名称"下的"设置"应用.

在此输入图像描述

有没有办法以编程方式在Windows 10设置应用程序中为我的应用程序打开应用程序界面的默认设置?

或者是否有另一种方法建议应用程序允许其用户自定义Windows 10中的关联?

emk*_*emk 5

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

%windir%\system32\control.exe /name Microsoft.DefaultPrograms /page pageDefaultProgram
Run Code Online (Sandbox Code Playgroud)

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

注意:此方法不适用于 2018 年 4 月更新。


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

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

版本 1709 或更高版本

要打开按应用程序设置默认值页面:

Activator->ActivateApplication(
    L"windows.immersivecontrolpanel_cw5n1h2txyewy"
    L"!microsoft.windows.immersivecontrolpanel",
    L"page=SettingsPageAppsDefaults"
    L"&target=SettingsPageAppsDefaultsDefaultAppsListView", AO_NONE, &pid);
Run Code Online (Sandbox Code Playgroud)


El *_*hez 5

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

    %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();
}
Run Code Online (Sandbox Code Playgroud)

  • @Martin Prikryl,IApplicationAssociationRegistrationUI 接口在 sud.dll 库中实现。我在 IDA Pro 中打开 sud.dll 并尝试查找字符串文字,例如“pageDefaultProgram”。请参阅函数“CApplicationAssociationRegistrationUI::LaunchAdvancedAssociationUI”。 (3认同)
  • 从2018年4月更新开始,此方法(或我所知道的任何其他方法)将不再打开[为程序设置关联]和[为程序设置关联]。将打开[默认应用程序]设置。 (3认同)
  • 值得一提的是,“pageDefaultProgram\pageAdvancedSettings?pszAppName=YourAppRegName”也适用于 Windows 7。但它似乎不适用于 Windows Vista。 (2认同)

Vin*_*ent 4

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

\n
\n

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

\n

我们知道您的默认设置对您很重要。在 Windows 10 中,所有应用程序 \xe2\x80\x93(经典 Windows 应用程序和通用 Windows 应用程序 \xe2\x80\x93)将无法调用更改默认设置的提示,仅限 Windows。您仍然可以完全控制默认体验,同时减少多个提示可能带来的一些不必要的噪音。

\n
\n

即使有某种方法可以启动设置应用程序,您也无法执行更多操作。

\n