Windows 8、8.1和10上IApplicationAssociationRegistration接口的替代方法

时间:2019-06-19 19:28:00

标签: c++ windows winapi

我是这个主题的新手。如果有些不清楚的地方需要澄清,请发表评论,我将尝试提供更多详细信息。

我一直在从事一个几年前实施的项目,需要进行一些调整以适应当今的需求。

此Windows桌面应用程序具有使用IApplicationAssociationRegistration界面的几种方法将该应用程序设置为默认应用程序的功能。

部分代码:

BOOL CDefaultPrograms::SetActiveSendAllDefaults()
{
    BOOL bRet = FALSE;
    IApplicationAssociationRegistration *pAAR;

    try
    {
        HRESULT hr = CoCreateInstance(
                    CLSID_ApplicationAssociationRegistration,
                    NULL,
                    CLSCTX_INPROC,
                    __uuidof(IApplicationAssociationRegistration),
                    (void**)&pAAR);

        if (SUCCEEDED(hr))
        {
            hr = pAAR->SetAppAsDefaultAll(ACTIVESEND_REGNAME);

            bRet = SUCCEEDED(hr);

            pAAR->Release();
        }
    }
    catch(...)
    {
    }

    return bRet;
}

根据文档,此功能仅适用于Windows 8之前的版本。

image

问题:对于Windows 8+,相同功能的替代方案是什么?

1 个答案:

答案 0 :(得分:1)

别无选择,微软不希望应用程序由于行为不当的第三方应用程序而更改默认值。

如果您想进入无证件领域,Explorer项中的子项将存储每个声明的文件扩展名的“加密”默认程序。