Установка поставщика поиска и задание поставщика поиска по умолчанию

Поддержка нескольких поставщиков поиска, реализованная в веб-браузере Windows Internet Explorer 8, позволяет существенно расширить возможности поиска. Установка поставщиков поиска осуществляется пользователем. Поэтому в качестве поставщика поиска по умолчанию может быть выбран любой поставщик. Чтобы пользователи могли контролировать изменение поставщика, используемого по умолчанию, в веб-браузер Internet Explorer 8 добавлен новый обязательный параметр Поставщик поиска по умолчанию.

В этой статье приведены рекомендации по заданию поставщика поиска по умолчанию для разработчиков поставщиков поиска.

Для задания поставщика поиска по умолчанию в веб-браузере Internet Explorer 7 любая программа могла присвоить параметру DefaultScope, расположенному в разделе реестра HKCU\Software\Microsoft\Internet Explorer\SearchScopes, GUID своего поставщика поиска. Постоянная перезапись значения этого параметра разными программами и уведомления об изменениях вызывали недовольство пользователей.

Для устранения этой проблемы и предоставления пользователю возможности контролировать работу веб-браузера и самостоятельно выбирать предпочитаемого поставщика поиска в веб-браузер Internet Explorer 8 добавлена функция уведомления пользователя о попытке изменения поставщика поиска по умолчанию.

В веб-браузере Internet Explorer 8 параметр DefaultScope по-прежнему доступен для записи, однако при использовании этой версии веб-браузера пользователь увидит диалоговое окно (при следующем запуске веб-браузера Internet Explorer) с запросом на изменение поставщика поиска по умолчанию. Диалоговое окно показано на рисунке ниже.


Рис. 1. В этом примере показано, что в качестве поставщика поиска по умолчанию пользователь выбрал Fabrikam Search. Программное обеспечение Contoso Search пытается изменить значение параметра DefaultScope.

Это диалоговое окно уведомляет пользователя о запросе на изменение поставщика поиска по умолчанию, однако сведения об источнике запроса, представленные в этом окне, являются неполными.

Для установки поставщика поиска и запроса на задание его в качестве поставщика поиска по умолчанию корпорация Майкрософт рекомендует использовать API IOpenServiceManager Internet Explorer 8 или более поздних версий. Эти API предоставляют способ управления поставщиками поиска, который не приведет к возникновению конфликта с другим программным обеспечением, которое установлено на пользовательском компьютере. Если для запроса на изменение поставщика поиска по умолчанию программное обеспечение использует эти API, в диалоговом окне отображаются полные сведения об источнике запроса (см. рис. 2).


Рис. 2. В этом примере программное обеспечение запрашивает изменение поставщика поиска по умолчанию с помощью рекомендуемых API SetDefault, поэтому в диалоговом окне отображаются полные сведения об источнике запроса. В данном случае источником запроса является программное обеспечение Contoso.com Internet Search.

Это диалоговое окно отображается сразу после вызова API SetDefault.

Для запроса на изменение поставщика поиска по умолчанию корпорация Майкрософт настоятельно рекомендует использовать только методы, описанные в этой статье. Попытки обойти диалоговое окно Поставщик поиска по умолчанию рассматриваются как недопустимое поведение.

В следующем примере кода показано, как установить поставщик поиска и предложить пользователю задать его в качестве поставщика поиска по умолчанию.

#include <windows.h>

#include <atlbase.h>

#include <openservice.h>

    HRESULT hr = E_FAIL;

    BOOL fComInitialized = FALSE;

    if (S_OK == CoInitialize(NULL))

    {

        fComInitialized = TRUE;

        //Открытие дескриптора диспетчера OpenService

        CComPtr<IOpenServiceManager> spManager;

        hr = spManager.CoCreateInstance(CLSID_OpenServiceManager);

        if (SUCCEEDED(hr))

        {

            CComPtr<IOpenService> spService;

            //Установка поставщика поиска

            //URL-OF-SERVICE. См. http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_description_elements

            hr = spManager->InstallService(URL-OF-SERVICE, &spService);

            if (hr==S_OK)

            {

                //Запрос на изменение поставщика поиска по умолчанию

                hr = spService->SetDefault(TRUE, NULL);

            }

        }

    }

    if (fComInitialized)

    {

        CoUninitialize();

    }

Обратите внимание, что API SetDefault отображают диалоговое окно (см. Рис. 2) с предложением изменить поставщик поиска по умолчанию. Пользователь может утвердить или отклонить этот запрос в ходе установки программного обеспечения. Если пользователь утверждает запрос, программное обеспечение может изменить значение по умолчанию. В противном случае программному обеспечению не удастся изменить значение по умолчанию. Пользователь может изменить значение этого параметра в диалоговом окне Надстройки.

Если двоичный файл, вызывающий API SetDefault, подписан с помощью действительного сертификата подписи кода, название программы и имя издателя будут отображаться в диалоговом окне Поставщик поиска по умолчанию. Корпорация Майкрософт рекомендует подписывать код, вызывающий SetDefault.

Связанные разделы