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中的关联?
要打开设置您的默认程序页面:
%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)
在“控制面板”中打开“默认程序”主窗口:
%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)
不再允许更改系统默认应用程序。以下是Windows Insider 博客上的公告:
\n\n\nWindows 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 归档时间: |
|
查看次数: |
3147 次 |
最近记录: |