从 Windows 10 开始,IApplicationAssociationRegistrationUI::LaunchAdvancedAssociationUI
method不再工作了。
在 Windows Vista、7 和 8 上,它会在指定应用程序的设置程序关联页面上打开控制面板。
在 Windows 10 上,它什么都不做。
它甚至记录在 Microsoft 文档中:
Starting in Windows 10, this does not launch the association dialog box. It displays a dialog to the user informing them that they can change the default programs used to open file extensions in their Settings
(即使声明的第二部分在当前版本的 Windows 10 中也不再正确)
实际上在最新版本的 Windows 10 中,该控制面板不再存在。它的功能已移至“设置”应用,位于应用 > 默认应用 > 按应用设置默认值 > [应用名称] 下。
有没有办法以编程方式在 Windows 10 设置应用程序中为我的应用程序打开按应用程序设置默认值屏幕?
或者是否有另一种建议应用程序允许其用户在 Windows 10 中自定义关联的方法?
最佳答案
在控制面板中打开主默认程序窗口:
%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
打开将文件类型或协议(protocol)与程序关联页面:
%windir%\system32\control.exe/name Microsoft.DefaultPrograms/page pageFileAssoc
打开更改自动播放设置页面:
%windir%\system32\control.exe/name Microsoft.AutoPlay
打开设置程序访问和计算机默认值页面:
%windir%\system32\ComputerDefaults.exe
附言您也可以使用 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();
}
关于Windows 10 相当于 LaunchAdvancedAssociationUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32178986/